[Bug 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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65531 --- Comment #5 from Ilya Enkovich ienkovich at gcc dot gnu.org --- Author: ienkovich Date: Tue Mar 31 08:29:28 2015 New Revision: 221788 URL: https://gcc.gnu.org/viewcvs?rev=221788root=gccview=rev Log: gcc/ PR target/65531 * ipa-chkp.c (chkp_maybe_create_clone): Don't set same_comdat_group for external symbols. * symtab.c (symtab_node::verify_symtab_nodes): Avoid infinite same_comdat_group traversal loop. gcc/testsuite/ PR target/65531 * gcc.target/i386/mpx/pr65531.cc: New. Added: trunk/gcc/testsuite/gcc.target/i386/mpx/pr65531.cc Modified: trunk/gcc/ChangeLog trunk/gcc/ipa-chkp.c trunk/gcc/symtab.c trunk/gcc/testsuite/ChangeLog
[Bug 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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65531 Ilya Enkovich ienkovich at gcc dot gnu.org changed: What|Removed |Added Status|ASSIGNED|RESOLVED Resolution|--- |FIXED --- Comment #6 from Ilya Enkovich ienkovich at gcc dot gnu.org --- Fixed
[Bug 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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65531 --- Comment #4 from Jan Hubicka hubicka at gcc dot gnu.org --- Author: hubicka Date: Fri Mar 27 15:19:35 2015 New Revision: 221736 URL: https://gcc.gnu.org/viewcvs?rev=221736root=gccview=rev Log: PR target/65531 * symtab.c (symtab_node::verify_symtab_nodes): Fix verification of comdat groups. Modified: trunk/gcc/ChangeLog trunk/gcc/symtab.c
[Bug 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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65531 --- Comment #3 from ienkovich at gcc dot gnu.org --- When instrumentation clone is created for a node with a comdat group, it gets the same comdat group and is linked with the original node via same_comdat_group. Do I need to change this behavior to pass verification (e.g. don't set same_comdat_group for the clone in case the original node has NULL for same_comdat_group and is not a function definition)? Probably would be easier to just always have same_comdat_group list for nodes with same comdat_group with no exceptions.
[Bug 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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65531 ienkovich at gcc dot gnu.org changed: What|Removed |Added CC||hubicka at gcc dot gnu.org --- Comment #1 from ienkovich at gcc dot gnu.org --- same_comdat_group verification loop looks weird. for (s = (*entry)-same_comdat_group; s != NULL s != node; s = s-same_comdat_group) if (!s || s == *entry) The '!s' condition has no chance to work due to 's != NULL' condition. Thus verifier doesn't catch cases when there are two nodes with the same comdat group not actually linked with same_comdat_group. Is it expected behavior? With a verifier patch applied I have this test failed with no '-fcheck-pointer-bounds -mmpx': diff --git a/gcc/symtab.c b/gcc/symtab.c index 88e168b..395cfe4 100644 --- a/gcc/symtab.c +++ b/gcc/symtab.c @@ -1131,7 +1131,7 @@ symtab_node::verify_symtab_nodes (void) if (!existed) *entry = node; else - for (s = (*entry)-same_comdat_group; s != NULL s != node; s = s-same_comdat_group) + for (s = (*entry)-same_comdat_group; 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.);
[Bug 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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65531 --- Comment #2 from Jan Hubicka hubicka at gcc dot gnu.org --- Hmm, there is missing empty statement after the for loop. There are two external symbols where we do not really build comdat groups (maybe we could now as they preserve little bit of useful info). So i guess I will just relax checker for that.
[Bug 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
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65531 ienkovich at gcc dot gnu.org changed: What|Removed |Added Status|UNCONFIRMED |ASSIGNED Last reconfirmed||2015-03-24 CC||ienkovich at gcc dot gnu.org Assignee|unassigned at gcc dot gnu.org |ienkovich at gcc dot gnu.org Ever confirmed|0 |1