aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-ssa-reassoc.c
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2020-07-29 22:06:41 -0400
committerPatrick Palka <ppalka@redhat.com>2020-07-29 22:06:41 -0400
commit71141b1bd537cc516e485c834c2d36abba3f4544 (patch)
tree3a2a2dc206c084c9574823d7fa1bcf9115b95129 /gcc/tree-ssa-reassoc.c
parentf31dd9beb95f4beda1d2bd5c0526c42d0ce455c4 (diff)
downloadgcc-71141b1bd537cc516e485c834c2d36abba3f4544.zip
gcc-71141b1bd537cc516e485c834c2d36abba3f4544.tar.gz
gcc-71141b1bd537cc516e485c834c2d36abba3f4544.tar.bz2
c++: alias_ctad_tweaks and constrained dguide [PR95486]
In the below testcase, we're ICEing from alias_ctad_tweaks ultimately because the implied deduction guide for X's user-defined constructor already has constraints associated with it. We then carry over these constraints to 'fprime', the overlying deduction guide for the alias template Y, via tsubst_decl from alias_ctad_tweaks. Later in alias_ctad_tweaks we call get_constraints followed by set_constraints without doing remove_constraints in between, which triggers the !found assert in set_constraints. This patch fixes this issue by adding an intervening call to remove_constraints. gcc/cp/ChangeLog: PR c++/95486 * pt.c (alias_ctad_tweaks): Call remove_constraints before calling set_constraints. gcc/testsuite/ChangeLog: PR c++/95486 * g++.dg/cpp2a/class-deduction-alias3.C: New test.
Diffstat (limited to 'gcc/tree-ssa-reassoc.c')
0 files changed, 0 insertions, 0 deletions