aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2014-08-19 13:29:41 -0400
committerJason Merrill <jason@gcc.gnu.org>2014-08-19 13:29:41 -0400
commitad035db84b6136038f9919c72c2bdf140342bf4e (patch)
tree4cb0153209b7ff5e3fdfbcaa3fa0522493f6fc63
parent46ae04656126e8fc3e7b16d9fb759c7bc29d4755 (diff)
downloadgcc-ad035db84b6136038f9919c72c2bdf140342bf4e.zip
gcc-ad035db84b6136038f9919c72c2bdf140342bf4e.tar.gz
gcc-ad035db84b6136038f9919c72c2bdf140342bf4e.tar.bz2
re PR lto/53808 (Undefined symbol when building a library with lto)
PR lto/53808 PR c++/61659 * decl.c (maybe_commonize_var): Don't use DECL_COMDAT to trigger comdat_linkage. From-SVN: r214177
-rw-r--r--gcc/cp/ChangeLog7
-rw-r--r--gcc/cp/decl.c4
-rw-r--r--gcc/testsuite/g++.dg/abi/spec1.C4
3 files changed, 11 insertions, 4 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index b366a4f..c60682e 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,10 @@
+2014-08-19 Jason Merrill <jason@redhat.com>
+
+ PR lto/53808
+ PR c++/61659
+ * decl.c (maybe_commonize_var): Don't use DECL_COMDAT to trigger
+ comdat_linkage.
+
2014-08-19 Gerald Pfeifer <gerald@pfeifer.com>
* class.c (contains_empty_class_p): Remove.
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c
index 92a6dbc..cc54cca 100644
--- a/gcc/cp/decl.c
+++ b/gcc/cp/decl.c
@@ -5099,10 +5099,6 @@ maybe_commonize_var (tree decl)
}
}
}
- else if (DECL_LANG_SPECIFIC (decl) && DECL_COMDAT (decl))
- /* Set it up again; we might have set DECL_INITIAL since the last
- time. */
- comdat_linkage (decl);
}
/* Issue an error message if DECL is an uninitialized const variable. */
diff --git a/gcc/testsuite/g++.dg/abi/spec1.C b/gcc/testsuite/g++.dg/abi/spec1.C
new file mode 100644
index 0000000..153c0cf
--- /dev/null
+++ b/gcc/testsuite/g++.dg/abi/spec1.C
@@ -0,0 +1,4 @@
+// { dg-final { scan-assembler-not "weak" } }
+
+template <class T> struct A { static int i; };
+template<> int A<int>::i = 42;