aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/lambda.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2017-06-16 22:28:18 -0400
committerJason Merrill <jason@gcc.gnu.org>2017-06-16 22:28:18 -0400
commitd4b1d43cec7ff278e97e22d1b06d220b7aa86be8 (patch)
treecd623ba15f2144a7d523bda6db25843c5d18e963 /gcc/cp/lambda.c
parentcc14602e32f0ba0b6b7628c487bfa1441c2d78f4 (diff)
downloadgcc-d4b1d43cec7ff278e97e22d1b06d220b7aa86be8.zip
gcc-d4b1d43cec7ff278e97e22d1b06d220b7aa86be8.tar.gz
gcc-d4b1d43cec7ff278e97e22d1b06d220b7aa86be8.tar.bz2
PR c++/80465 - ICE with generic lambda with noexcept-specifier.
* lambda.c (maybe_add_lambda_conv_op): Keep processing_template_decl set longer for a generic lambda. From-SVN: r249322
Diffstat (limited to 'gcc/cp/lambda.c')
-rw-r--r--gcc/cp/lambda.c9
1 files changed, 5 insertions, 4 deletions
diff --git a/gcc/cp/lambda.c b/gcc/cp/lambda.c
index ee8784c..41d4921 100644
--- a/gcc/cp/lambda.c
+++ b/gcc/cp/lambda.c
@@ -987,6 +987,8 @@ maybe_add_lambda_conv_op (tree type)
null_pointer_node);
if (generic_lambda_p)
{
+ ++processing_template_decl;
+
/* Prepare the dependent member call for the static member function
'_FUN' and, potentially, prepare another call to be used in a decltype
return expression for a deduced return call op to allow for simple
@@ -1036,9 +1038,7 @@ maybe_add_lambda_conv_op (tree type)
if (generic_lambda_p)
{
- ++processing_template_decl;
tree a = forward_parm (tgt);
- --processing_template_decl;
CALL_EXPR_ARG (call, ix) = a;
if (decltype_call)
@@ -1062,11 +1062,9 @@ maybe_add_lambda_conv_op (tree type)
{
if (decltype_call)
{
- ++processing_template_decl;
fn_result = finish_decltype_type
(decltype_call, /*id_expression_or_member_access_p=*/false,
tf_warning_or_error);
- --processing_template_decl;
}
}
else
@@ -1084,6 +1082,9 @@ maybe_add_lambda_conv_op (tree type)
&& TYPE_NOTHROW_P (TREE_TYPE (callop)))
stattype = build_exception_variant (stattype, noexcept_true_spec);
+ if (generic_lambda_p)
+ --processing_template_decl;
+
/* First build up the conversion op. */
tree rettype = build_pointer_type (stattype);