summaryrefslogtreecommitdiff
path: root/gcc/cp/pt.c
diff options
context:
space:
mode:
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-12 08:21:53 +0000
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>2016-01-12 08:21:53 +0000
commit1d10d64cc2e5cea94789495777c60468ad500a17 (patch)
tree8cc7d55e8ab77206f6039b302671e3002677fab7 /gcc/cp/pt.c
parentda024748bed3deeb511d0946613e309ee525061f (diff)
downloadgcc-1d10d64cc2e5cea94789495777c60468ad500a17.tar.gz
PR c++/66808
PR c++/69000 * pt.c (tsubst_decl): If not local_p, clear DECL_TEMPLATE_INFO. * g++.dg/tls/pr66808.C: New test. * g++.dg/tls/pr69000.C: New test. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@232259 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r--gcc/cp/pt.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index ad5099f94bc..edec774a0c9 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -12292,8 +12292,13 @@ tsubst_decl (tree t, tree args, tsubst_flags_t complain)
SET_DECL_IMPLICIT_INSTANTIATION (r);
register_specialization (r, gen_tmpl, argvec, false, hash);
}
- else if (!cp_unevaluated_operand)
- register_local_specialization (r, t);
+ else
+ {
+ if (DECL_LANG_SPECIFIC (r))
+ DECL_TEMPLATE_INFO (r) = NULL_TREE;
+ if (!cp_unevaluated_operand)
+ register_local_specialization (r, t);
+ }
DECL_CHAIN (r) = NULL_TREE;