aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2015-05-20 17:32:52 -0400
committerJason Merrill <jason@gcc.gnu.org>2015-05-20 17:32:52 -0400
commit226a93b7b7e464dd4c030b75e1d118f0e382cde1 (patch)
tree20b38d06dc8739977b90e964eb4a43e109dfddf4 /gcc
parent1210105350eff9956347a4c0a3ae09d0514b81d0 (diff)
downloadgcc-226a93b7b7e464dd4c030b75e1d118f0e382cde1.zip
gcc-226a93b7b7e464dd4c030b75e1d118f0e382cde1.tar.gz
gcc-226a93b7b7e464dd4c030b75e1d118f0e382cde1.tar.bz2
pt.c (tsubst_decl): SET_DECL_IMPLICIT_INSTANTIATION before register_specialization.
* pt.c (tsubst_decl) [VAR_DECL]: SET_DECL_IMPLICIT_INSTANTIATION before register_specialization. From-SVN: r223461
Diffstat (limited to 'gcc')
-rw-r--r--gcc/cp/ChangeLog3
-rw-r--r--gcc/cp/pt.c2
-rw-r--r--gcc/testsuite/g++.dg/cpp1y/var-templ27.C9
3 files changed, 13 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 320023a..b4c60b6 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,5 +1,8 @@
2015-05-20 Jason Merrill <jason@redhat.com>
+ * pt.c (tsubst_decl) [VAR_DECL]: SET_DECL_IMPLICIT_INSTANTIATION
+ before register_specialization.
+
* decl.c (grok_op_properties): Don't complain about size_t
placement delete here.
* call.c (second_parm_is_size_t): Split out from...
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 60f3958..7555114 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -11407,9 +11407,9 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
processing here. */
DECL_EXTERNAL (r) = 1;
- register_specialization (r, gen_tmpl, argvec, false, hash);
DECL_TEMPLATE_INFO (r) = build_template_info (tmpl, argvec);
SET_DECL_IMPLICIT_INSTANTIATION (r);
+ register_specialization (r, gen_tmpl, argvec, false, hash);
}
else if (!cp_unevaluated_operand)
register_local_specialization (r, t);
diff --git a/gcc/testsuite/g++.dg/cpp1y/var-templ27.C b/gcc/testsuite/g++.dg/cpp1y/var-templ27.C
new file mode 100644
index 0000000..da06b012
--- /dev/null
+++ b/gcc/testsuite/g++.dg/cpp1y/var-templ27.C
@@ -0,0 +1,9 @@
+// { dg-do compile { target c++14 } }
+
+namespace A
+{
+ template <class T> int I = 0;
+ template <class T> int I<T*> = 42;
+}
+
+int i = A::I<void*>;