From a915c29a7d63ccb88cfded75ba1c8c4919845e98 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Thu, 9 Mar 2023 17:01:48 -0500 Subject: 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. --- gcc/cp/lambda.cc | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gcc/cp/lambda.cc') 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; } -- cgit v1.1