diff options
author | Patrick Palka <ppalka@redhat.com> | 2021-04-24 00:14:29 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2021-04-24 00:14:29 -0400 |
commit | bcd77b7b9f35bd5b559ed593c3b3e346c1e6f364 (patch) | |
tree | e88f062f4be1c92aecddaf6953f76ade32c1b36f /gcc/tree-vect-generic.c | |
parent | 5f1a2cb9c2dc09eed53da5d5787d14bec700b10b (diff) | |
download | gcc-bcd77b7b9f35bd5b559ed593c3b3e346c1e6f364.zip gcc-bcd77b7b9f35bd5b559ed593c3b3e346c1e6f364.tar.gz gcc-bcd77b7b9f35bd5b559ed593c3b3e346c1e6f364.tar.bz2 |
c++: do_class_deduction and dependent init [PR93383]
Here we're crashing during CTAD with a dependent initializer (performed
from convert_template_argument) because one of the initializer's
elements has an empty TREE_TYPE, which ends up making resolve_args
unhappy.
Besides the case where we're initializing one template placeholder
from another, which is already specifically handled earlier in
do_class_deduction, it seems we can't in general correctly resolve a
template placeholder using a dependent initializer, so this patch makes
the function just punt until instantiation time instead.
gcc/cp/ChangeLog:
PR c++/89565
PR c++/93383
PR c++/95291
PR c++/99200
PR c++/99683
* pt.c (do_class_deduction): Punt if the initializer is
type-dependent.
gcc/testsuite/ChangeLog:
PR c++/89565
PR c++/93383
PR c++/95291
PR c++/99200
PR c++/99683
* g++.dg/cpp2a/nontype-class39.C: Remove dg-ice directive.
* g++.dg/cpp2a/nontype-class45.C: New test.
* g++.dg/cpp2a/nontype-class46.C: New test.
* g++.dg/cpp2a/nontype-class47.C: New test.
* g++.dg/cpp2a/nontype-class48.C: New test.
Diffstat (limited to 'gcc/tree-vect-generic.c')
0 files changed, 0 insertions, 0 deletions