diff options
| -rw-r--r-- | gcc/cp/ChangeLog | 3 | ||||
| -rw-r--r-- | gcc/cp/optimize.c | 7 |
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])) |
