diff options
Diffstat (limited to 'gcc/cp/optimize.c')
-rw-r--r-- | gcc/cp/optimize.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/gcc/cp/optimize.c b/gcc/cp/optimize.c index ffa5258..c16e163 100644 --- a/gcc/cp/optimize.c +++ b/gcc/cp/optimize.c @@ -191,7 +191,7 @@ cdtor_comdat_group (tree complete, tree base) diff_seen = true; } grp_name[idx] = '\0'; - gcc_assert (diff_seen); + gcc_assert (diff_seen || symtab_get_node (complete)->alias); return get_identifier (grp_name); } @@ -553,6 +553,8 @@ maybe_clone_body (tree fn) *[CD][12]*. */ comdat_group = cdtor_comdat_group (fns[1], fns[0]); cgraph_get_create_node (fns[0])->set_comdat_group (comdat_group); + if (symtab_get_node (clone)->same_comdat_group) + symtab_remove_from_same_comdat_group (symtab_get_node (clone)); symtab_add_to_same_comdat_group (symtab_get_node (clone), symtab_get_node (fns[0])); } |