aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJan Hubicka <hubicka@ucw.cz>2015-03-27 16:19:35 +0100
committerJan Hubicka <hubicka@gcc.gnu.org>2015-03-27 15:19:35 +0000
commit6e85fbaadd3fdbc8127ec13b64fa70e59aef7665 (patch)
tree2378590cd5080fd81b1cba8bdbf9cf0ee0aba333
parent931c8e9a04bd7cb7c8f372a77e8061c46b19a742 (diff)
downloadgcc-6e85fbaadd3fdbc8127ec13b64fa70e59aef7665.zip
gcc-6e85fbaadd3fdbc8127ec13b64fa70e59aef7665.tar.gz
gcc-6e85fbaadd3fdbc8127ec13b64fa70e59aef7665.tar.bz2
re PR target/65531 (ICE: symtab_node::verify failed: Two symbols with same comdat_group are not linked by the same_comdat_group list. with -fcheck-pointer-bounds -mmpx)
PR target/65531 * symtab.c (symtab_node::verify_symtab_nodes): Fix verification of comdat groups. From-SVN: r221736
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/symtab.c11
2 files changed, 14 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 0f0a6f5..e846805 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,11 @@
2015-03-27 Jan Hubicka <hubicka@ucw.cz>
+ PR target/65531
+ * symtab.c (symtab_node::verify_symtab_nodes): Fix verification of
+ comdat groups.
+
+2015-03-27 Jan Hubicka <hubicka@ucw.cz>
+
PR ipa/65600
* cgraph.c (cgraph_update_edges_for_call_stmt_node): Fix the case
of optimized out indirect call.
diff --git a/gcc/symtab.c b/gcc/symtab.c
index 88e168b..84a0981 100644
--- a/gcc/symtab.c
+++ b/gcc/symtab.c
@@ -1130,15 +1130,20 @@ symtab_node::verify_symtab_nodes (void)
&existed);
if (!existed)
*entry = node;
- else
- for (s = (*entry)->same_comdat_group; s != NULL && s != node; s = s->same_comdat_group)
+ else if (!DECL_EXTERNAL (node->decl))
+ {
+ for (s = (*entry)->same_comdat_group; s != NULL && s != node;
+ s = s->same_comdat_group)
+ ;
if (!s || s == *entry)
{
- error ("Two symbols with same comdat_group are not linked by the same_comdat_group list.");
+ error ("Two symbols with same comdat_group are not linked by "
+ "the same_comdat_group list.");
(*entry)->debug ();
node->debug ();
internal_error ("symtab_node::verify failed");
}
+ }
}
}
}