c++: templated static local var has value-dep addr [PR98930]
commitf3930418cb82000fae3cb4e98e870428800cf295
authorPatrick Palka <ppalka@redhat.com>
Tue, 5 Oct 2021 13:50:02 +0000 (5 09:50 -0400)
committerPatrick Palka <ppalka@redhat.com>
Tue, 5 Oct 2021 13:50:02 +0000 (5 09:50 -0400)
tree5609e92195272b7a11bf3bb262eba6298b5f024c
parent7f4192dd3d84cb3f6584ae847eae18519d1eb76d
c++: templated static local var has value-dep addr [PR98930]

Here uses_template_parms returns false for the dependent type A<&impl::i>,
which causes tsubst_aggr_type to think it's non-dependent and not bother
substituting into it, leading to breakage.

This patch fixes this by making has_value_dependent_address also return
true for templated static local variables.

PR c++/98930

gcc/cp/ChangeLog:

* pt.c (has_value_dependent_address): Return true for a static
local variable from a function template.

gcc/testsuite/ChangeLog:

* g++.dg/cpp1z/nontype4.C: New test.
* g++.dg/cpp1z/nontype4a.C: New test.
gcc/cp/pt.c
gcc/testsuite/g++.dg/cpp1z/nontype4.C [new file with mode: 0644]
gcc/testsuite/g++.dg/cpp1z/nontype4a.C [new file with mode: 0644]