aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/optimize.c7
2 files changed, 8 insertions, 2 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index da39680..cb230e2 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2011-06-23 Jason Merrill <jason@redhat.com>
+ * optimize.c (maybe_clone_body): Set linkage flags before
+ cgraph_same_body_alias.
+
PR c++/49440
* class.c (set_linkage_according_to_type): Just check TREE_PUBLIC
on the type's name.
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c
index 87302dc..b9e3551 100644
--- a/gcc/cp/optimize.c
+++ b/gcc/cp/optimize.c
@@ -310,8 +310,11 @@ maybe_clone_body (tree fn)
|| (HAVE_COMDAT_GROUP
&& DECL_WEAK (fns[0])))
&& (flag_syntax_only
- || cgraph_same_body_alias (cgraph_get_node (fns[0]), clone,
- fns[0])))
+ /* Set linkage flags appropriately before
+ cgraph_create_function_alias looks at them. */
+ || (expand_or_defer_fn_1 (clone)
+ && cgraph_same_body_alias (cgraph_get_node (fns[0]),
+ clone, fns[0]))))
{
alias = true;
if (DECL_ONE_ONLY (fns[0]))