re PR c++/65811 (ice in vague_linkage_p)
authorPaolo Carlini <paolo.carlini@oracle.com>
Wed, 24 Jun 2015 09:21:45 +0000 (09:21 +0000)
committerPaolo Carlini <paolo@gcc.gnu.org>
Wed, 24 Jun 2015 09:21:45 +0000 (09:21 +0000)
/cp
2015-06-24  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/65811
* decl.c (duplicate_decls): Adjust DECL_COMDAT of newdecl.

/testsuite
2015-06-24  Paolo Carlini  <paolo.carlini@oracle.com>

PR c++/65811
* g++.dg/other/linkage2.C: New.

From-SVN: r224888

gcc/cp/ChangeLog
gcc/cp/decl.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/other/linkage2.C [new file with mode: 0644]

index de6e856e420f994b1c041789e088b9f6c98478f5..03f0989505214a8b3f5e3433e9293721f5561a52 100644 (file)
@@ -1,3 +1,8 @@
+2015-06-24  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/65811
+       * decl.c (duplicate_decls): Adjust DECL_COMDAT of newdecl.
+
 2015-06-23  Patrick Palka  <ppalka@gcc.gnu.org>
 
        PR c++/30044
index a8fc1a57a959f6b55fafb2a3ff91f54b77b601e5..8f0bb34c4b6bb32a2e259bf3ff80c7e403fa9527 100644 (file)
@@ -2106,6 +2106,8 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
   TREE_STATIC (olddecl) = TREE_STATIC (newdecl) |= TREE_STATIC (olddecl);
   if (! DECL_EXTERNAL (olddecl))
     DECL_EXTERNAL (newdecl) = 0;
+  if (! DECL_COMDAT (olddecl))
+    DECL_COMDAT (newdecl) = 0;
 
   new_template_info = NULL_TREE;
   if (DECL_LANG_SPECIFIC (newdecl) && DECL_LANG_SPECIFIC (olddecl))
index daadf4c4229d592bef7145220575f6d6eeb91bd2..7786e48e8e94add94f712e04384a8ab04fb6d55d 100644 (file)
@@ -1,3 +1,8 @@
+2015-06-24  Paolo Carlini  <paolo.carlini@oracle.com>
+
+       PR c++/65811
+       * g++.dg/other/linkage2.C: New.
+
 2015-06-24  Ramana Radhakrishnan  <ramana.radhakrishnan@arm.com>
 
        PR target/63408
diff --git a/gcc/testsuite/g++.dg/other/linkage2.C b/gcc/testsuite/g++.dg/other/linkage2.C
new file mode 100644 (file)
index 0000000..97f8ef2
--- /dev/null
@@ -0,0 +1,10 @@
+// PR c++/65811
+
+struct foo { int i; };
+
+static void fn1 ();
+inline void
+fn1 ()
+{
+  static struct foo a[1];
+}