diff options
author | Jason Merrill <jason@redhat.com> | 2011-06-08 09:08:45 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2011-06-08 09:08:45 -0400 |
commit | 29f445bca0097771a52c7558f38d2fe287be2419 (patch) | |
tree | 7be2674888abd131ab606e3c9c92be3825be5cea /gcc/cp/pt.c | |
parent | d9c77712d5b14e131210303ffbef49096ae613d1 (diff) | |
download | gcc-29f445bca0097771a52c7558f38d2fe287be2419.zip gcc-29f445bca0097771a52c7558f38d2fe287be2419.tar.gz gcc-29f445bca0097771a52c7558f38d2fe287be2419.tar.bz2 |
pt.c (deduction_tsubst_fntype): Don't free the tinst entry if a pending_template entry is pointing at it.
* pt.c (deduction_tsubst_fntype): Don't free the tinst entry
if a pending_template entry is pointing at it.
From-SVN: r174807
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r-- | gcc/cp/pt.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index f93fa7f..61ca31c 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -13611,6 +13611,7 @@ deduction_tsubst_fntype (tree fn, tree targs) static bool excessive_deduction_depth; static int deduction_depth; location_t save_loc = input_location; + struct pending_template *old_last_pend = last_pending_template; tree fntype = TREE_TYPE (fn); tree tinst; @@ -13644,7 +13645,9 @@ deduction_tsubst_fntype (tree fn, tree targs) } pop_tinst_level (); - ggc_free (tinst); + /* We can't free this if a pending_template entry is pointing at it. */ + if (last_pending_template == old_last_pend) + ggc_free (tinst); return r; } |