aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorMartin Sebor <msebor@redhat.com>2017-01-11 21:02:46 +0000
committerMartin Sebor <msebor@gcc.gnu.org>2017-01-11 14:02:46 -0700
commit3594adc7b02ebd2a6f66d3b5db9f6ebbd1bc6547 (patch)
tree9832fc5ed512100c0621333f325a13d0a6275067 /gcc
parent01bfd25762bea829b0ad271bc6daeddb7fcac22f (diff)
downloadgcc-3594adc7b02ebd2a6f66d3b5db9f6ebbd1bc6547.zip
gcc-3594adc7b02ebd2a6f66d3b5db9f6ebbd1bc6547.tar.gz
gcc-3594adc7b02ebd2a6f66d3b5db9f6ebbd1bc6547.tar.bz2
PR c++/24511 - [DR 470] explicit instantiation/extern template unsats
PR c++/24511 - [DR 470] explicit instantiation/extern template unsats // on symbols defined later gcc/testsuite/ChangeLog: * g++.dg/template/explicit9.C: New test. From-SVN: r244337
Diffstat (limited to 'gcc')
-rw-r--r--gcc/testsuite/ChangeLog5
-rw-r--r--gcc/testsuite/g++.dg/template/explicit9.C24
2 files changed, 29 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 4f281cb..98fd949 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,8 @@
+2017-01-11 Martin Sebor <msebor@redhat.com>
+
+ PR c++/24511
+ * g++.dg/template/explicit9.C: New test.
+
2017-01-11 Nathan Sidwell <nathan@acm.org>
PR c++/77812
diff --git a/gcc/testsuite/g++.dg/template/explicit9.C b/gcc/testsuite/g++.dg/template/explicit9.C
new file mode 100644
index 0000000..e4f7d88
--- /dev/null
+++ b/gcc/testsuite/g++.dg/template/explicit9.C
@@ -0,0 +1,24 @@
+// PR c++/24511 - [DR 470] explicit instantiation/extern template unsats
+// on symbols defined later
+// { dg-do compile }
+
+template <class T> struct S { T foo (); T bar (); };
+template <class T> T S<T>::foo () { return T (); }
+
+#ifndef MAIN
+
+// This part is being tested by the dg-final directive.
+template struct S<int>;
+#else
+
+// This part is not being tested.
+extern template struct S<int>;
+int main ()
+{
+ return S<int>().foo () + S<int>().bar ();
+}
+#endif
+
+template <class T> T S<T>::bar () { return T (); }
+
+// { dg-final { scan-assembler-not "\\\*UND\\\*\[^\n]*_Z1fIiEvPT_" } }