]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
PR c++/61623
authorjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Jul 2014 00:34:02 +0000 (00:34 +0000)
committerjason <jason@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 17 Jul 2014 00:34:02 +0000 (00:34 +0000)
* symtab.c (symtab_remove_from_same_comdat_group): Also
set_comdat_group to NULL_TREE.
(verify_symtab): Fix diagnostic.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@212705 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/symtab.c
gcc/testsuite/g++.dg/opt/declone2.C [new file with mode: 0644]

index f3a404fe9e95940fcb5c3858132b6a1906efe4e0..66ea5a949d5c71eeacedd7c3c89b2698d1c7b3ca 100644 (file)
@@ -1,3 +1,10 @@
+2014-07-17  Jason Merrill  <jason@redhat.com>
+
+       PR c++/61623
+       * symtab.c (symtab_remove_from_same_comdat_group): Also
+       set_comdat_group to NULL_TREE.
+       (verify_symtab): Fix diagnostic.
+
 2014-07-16  David Wohlferd <dw@LimeGreenSocks.com>
 
        PR target/61662
index 3a59935d132e20811b40b341ccca970cf59a604c..005057384e37201d41e41c439d8807b0e3b96eb7 100644 (file)
@@ -314,6 +314,7 @@ symtab_remove_from_same_comdat_group (symtab_node *node)
       else
        prev->same_comdat_group = node->same_comdat_group;
       node->same_comdat_group = NULL;
+      node->set_comdat_group (NULL_TREE);
     }
 }
 
@@ -1217,7 +1218,7 @@ verify_symtab (void)
                {
                  error ("Two symbols with same comdat_group are not linked by the same_comdat_group list.");
                  dump_symtab_node (stderr, *entry);
-                 dump_symtab_node (stderr, s);
+                 dump_symtab_node (stderr, node);
                  internal_error ("verify_symtab failed");
                }
        }
diff --git a/gcc/testsuite/g++.dg/opt/declone2.C b/gcc/testsuite/g++.dg/opt/declone2.C
new file mode 100644 (file)
index 0000000..e725d8e
--- /dev/null
@@ -0,0 +1,10 @@
+// PR c++/61623
+// { dg-options "-Os" }
+
+struct C {};
+struct B : virtual C {};
+struct A : B {
+  A (int) {}
+};
+
+A a (0);