aboutsummaryrefslogtreecommitdiff
path: root/gcc/testsuite
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2014-07-30 13:27:14 -0400
committerJason Merrill <jason@gcc.gnu.org>2014-07-30 13:27:14 -0400
commitd5d0ed2d89a56273efe30331c3e94651134615e7 (patch)
tree043925ba81282b0a865db1992b86c852a51fdf2f /gcc/testsuite
parentea3e455ac77a67e96a916c4c64249be8e20124cd (diff)
downloadgcc-d5d0ed2d89a56273efe30331c3e94651134615e7.zip
gcc-d5d0ed2d89a56273efe30331c3e94651134615e7.tar.gz
gcc-d5d0ed2d89a56273efe30331c3e94651134615e7.tar.bz2
re PR lto/53808 (Undefined symbol when building a library with lto)
PR lto/53808 PR c++/61659 * pt.c (push_template_decl_real): Set DECL_COMDAT on templates. (check_explicit_specialization): Clear it on specializations. * decl.c (duplicate_decls, start_decl): Likewise. (grokmethod, grokfndecl): Set DECL_COMDAT on inlines. * method.c (implicitly_declare_fn): Set DECL_COMDAT. Determine linkage after setting the appropriate flags. * tree.c (decl_linkage): Don't check DECL_COMDAT. * decl2.c (mark_needed): Mark clones. (import_export_decl): Not here. From-SVN: r213307
Diffstat (limited to 'gcc/testsuite')
-rw-r--r--gcc/testsuite/g++.dg/opt/devirt4.C7
1 files changed, 3 insertions, 4 deletions
diff --git a/gcc/testsuite/g++.dg/opt/devirt4.C b/gcc/testsuite/g++.dg/opt/devirt4.C
index 5a24eec..72f56af 100644
--- a/gcc/testsuite/g++.dg/opt/devirt4.C
+++ b/gcc/testsuite/g++.dg/opt/devirt4.C
@@ -1,8 +1,7 @@
// PR lto/53808
-// Devirtualization + inlining should produce a non-virtual
-// call to ~foo.
-// { dg-options "-O -fdevirtualize" }
-// { dg-final { scan-assembler "_ZN3fooD2Ev" } }
+// Devirtualization should not produce an external ref to ~bar.
+// { dg-options "-O2" }
+// { dg-final { scan-assembler-not "_ZN3barD0Ev" } }
struct foo {
virtual ~foo();