c++: bad ggc_free in try_class_unification [PR109556]
authorPatrick Palka <ppalka@redhat.com>
Wed, 19 Apr 2023 17:07:46 +0000 (13:07 -0400)
committerPatrick Palka <ppalka@redhat.com>
Wed, 19 Apr 2023 17:08:57 +0000 (13:08 -0400)
commit90361bc6f4ffffedb444e86380b6d1e08475fa74
tree64861fe3b7956f46b1eff08429764b8385be9104
parent68997d4323cdcbd4c626b04f6f29df835694056a
c++: bad ggc_free in try_class_unification [PR109556]

Aside from correcting how try_class_unification copies multi-dimensional
'targs', r13-377-g3e948d645bc908 also made it ggc_free this copy as an
optimization.  But this is wrong since the call to unify within might've
captured the args in persistent memory such as the satisfaction cache
(as part of constrained auto deduction).

PR c++/109556

gcc/cp/ChangeLog:

* pt.cc (try_class_unification): Don't ggc_free the copy of
'targs'.

gcc/testsuite/ChangeLog:

* g++.dg/cpp2a/concepts-placeholder13.C: New test.

(cherry picked from commit 5e284ebbc3082c5a8974d24e3a0977aa48f3cc60)
gcc/cp/pt.cc
gcc/testsuite/g++.dg/cpp2a/concepts-placeholder13.C [new file with mode: 0644]