re PR c++/51832 (Rev.182970 causes LTO link errors (multiple definitions of allocator...
authorJason Merrill <jason@redhat.com>
Sun, 22 Jan 2012 20:56:34 +0000 (15:56 -0500)
committerJason Merrill <jason@gcc.gnu.org>
Sun, 22 Jan 2012 20:56:34 +0000 (15:56 -0500)
PR c++/51832
* varpool.c (varpool_analyze_pending_decls): Copy DECL_EXTERNAL
for extra name aliases.

From-SVN: r183396

gcc/ChangeLog
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/lto/pr51832.h [new file with mode: 0644]
gcc/testsuite/g++.dg/lto/pr51832_0.C [new file with mode: 0644]
gcc/testsuite/g++.dg/lto/pr51832_1.C [new file with mode: 0644]
gcc/varpool.c

index 71df98e6699241328970464a980ef6af7e0cf9a9..be828596d28d83ae249b3d2a32db7ec4c452c4e9 100644 (file)
@@ -1,3 +1,9 @@
+2012-01-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/51832
+       * varpool.c (varpool_analyze_pending_decls): Copy DECL_EXTERNAL
+       for extra name aliases.
+
 2012-01-22  Eric Botcazou  <ebotcazou@adacore.com>
 
        PR rtl-optimization/51924
index 07b1fef7697e48d30463c9ee11ddbbab667b8b5a..248578f4b170e8285d5f0c7efb8a35d39e432fde 100644 (file)
@@ -1,3 +1,10 @@
+2012-01-22  Jason Merrill  <jason@redhat.com>
+
+       PR c++/51832
+       * g++.dg/lto/pr51832.h: New.
+       * g++.dg/lto/pr51832_0.C: New.
+       * g++.dg/lto/pr51832_1.C: New.
+
 2012-01-22  Eric Botcazou  <ebotcazou@adacore.com>
 
        * gcc.dg/ext-elim-1.c: New test.
diff --git a/gcc/testsuite/g++.dg/lto/pr51832.h b/gcc/testsuite/g++.dg/lto/pr51832.h
new file mode 100644 (file)
index 0000000..fee3693
--- /dev/null
@@ -0,0 +1,6 @@
+template<class...T> struct A
+{
+  static int i;
+};
+
+inline void f() { A<int>::i = 0; }
diff --git a/gcc/testsuite/g++.dg/lto/pr51832_0.C b/gcc/testsuite/g++.dg/lto/pr51832_0.C
new file mode 100644 (file)
index 0000000..f8fd7ab
--- /dev/null
@@ -0,0 +1,7 @@
+// PR c++/51832
+// { dg-lto-do link }
+// { dg-lto-options { "-std=c++11 -flto -fabi-version=2" } }
+
+#include "pr51832.h"
+
+int main() { }
diff --git a/gcc/testsuite/g++.dg/lto/pr51832_1.C b/gcc/testsuite/g++.dg/lto/pr51832_1.C
new file mode 100644 (file)
index 0000000..6f0137b
--- /dev/null
@@ -0,0 +1 @@
+#include "pr51832.h"
index 74fc1ba712b6dd321ed2f47083c853e6a35ccafc..e01accb21dc81c4663a7d3d27f3d4a64f39f96d7 100644 (file)
@@ -484,6 +484,7 @@ varpool_analyze_pending_decls (void)
            {
              DECL_WEAK (node->decl) = DECL_WEAK (node->alias_of);
              TREE_PUBLIC (node->decl) = TREE_PUBLIC (node->alias_of);
+             DECL_EXTERNAL (node->decl) = DECL_EXTERNAL (node->alias_of);
              DECL_VISIBILITY (node->decl) = DECL_VISIBILITY (node->alias_of);
              if (TREE_PUBLIC (node->decl))
                {