aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/optimize.c
diff options
context:
space:
mode:
Diffstat (limited to 'gcc/cp/optimize.c')
-rw-r--r--gcc/cp/optimize.c4
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]));
}