aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/lambda.cc
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2023-03-09 17:01:48 -0500
committerJason Merrill <jason@redhat.com>2023-03-10 13:49:45 -0500
commita915c29a7d63ccb88cfded75ba1c8c4919845e98 (patch)
tree20cb58c518a09c09063a761cfcb542a59234853c /gcc/cp/lambda.cc
parent4d0baeae315ebe7d0ec7682ea3e7c0516027c2b8 (diff)
downloadgcc-a915c29a7d63ccb88cfded75ba1c8c4919845e98.zip
gcc-a915c29a7d63ccb88cfded75ba1c8c4919845e98.tar.gz
gcc-a915c29a7d63ccb88cfded75ba1c8c4919845e98.tar.bz2
c++: constrained lambda error-recovery [PR108972]
Better not to ICE after various valid errors. PR c++/108972 gcc/cp/ChangeLog: * lambda.cc (compare_lambda_template_head): Check more for error_mark_node. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/concepts-lambda3.C: Run at lower std levels, but expect errors.
Diffstat (limited to 'gcc/cp/lambda.cc')
-rw-r--r--gcc/cp/lambda.cc4
1 files changed, 4 insertions, 0 deletions
diff --git a/gcc/cp/lambda.cc b/gcc/cp/lambda.cc
index c752622..212990a 100644
--- a/gcc/cp/lambda.cc
+++ b/gcc/cp/lambda.cc
@@ -1537,6 +1537,8 @@ compare_lambda_template_head (tree tmpl_a, tree tmpl_b)
if (parm_a == error_mark_node)
return false;
parm_a = TREE_VALUE (parm_a);
+ if (parm_a == error_mark_node)
+ return false;
if (DECL_VIRTUAL_P (parm_a))
parm_a = NULL_TREE;
}
@@ -1548,6 +1550,8 @@ compare_lambda_template_head (tree tmpl_a, tree tmpl_b)
if (parm_b == error_mark_node)
return false;
parm_b = TREE_VALUE (parm_b);
+ if (parm_b == error_mark_node)
+ return false;
if (DECL_VIRTUAL_P (parm_b))
parm_b = NULL_TREE;
}