aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-inline.c
diff options
context:
space:
mode:
authorPatrick Palka <ppalka@redhat.com>2020-05-13 16:40:10 -0400
committerPatrick Palka <ppalka@redhat.com>2020-05-13 16:40:10 -0400
commit7e52f8b1e03776575b92574252d9b6bbed9f1af4 (patch)
treeb1258207dbf28547680d2b1a431326ac498c56b6 /gcc/tree-inline.c
parent661232da72d29f8f2385d5f588727beb74360144 (diff)
downloadgcc-7e52f8b1e03776575b92574252d9b6bbed9f1af4.zip
gcc-7e52f8b1e03776575b92574252d9b6bbed9f1af4.tar.gz
gcc-7e52f8b1e03776575b92574252d9b6bbed9f1af4.tar.bz2
c++: premature requires-expression folding [PR95020]
In the testcase below we're prematurely folding away the requires-expression to 'true' after substituting in the function's template arguments, but before substituting in the lambda's deduced template arguments. This patch removes the uses_template_parms check when deciding in tsubst_requires_expr whether to keep around a new requires-expression. Regardless of whether the template arguments are dependent, there still might be more template parameters to later substitute in (as in the below testcase) and even if not, tsubst_expr doesn't perform full semantic processing unless !processing_template_decl, so we should still wait until then to fold away the requires-expression. gcc/cp/ChangeLog: PR c++/95020 * constraint.c (tsubst_requires_expr): Produce a new requires-expression when processing_template_decl, even if template arguments are not dependent. gcc/testsuite/ChangeLog: PR c++/95020 * g++/cpp2a/concepts-lambda7.C: New test.
Diffstat (limited to 'gcc/tree-inline.c')
0 files changed, 0 insertions, 0 deletions