diff options
author | Jason Merrill <jason@redhat.com> | 2017-06-16 22:28:18 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2017-06-16 22:28:18 -0400 |
commit | d4b1d43cec7ff278e97e22d1b06d220b7aa86be8 (patch) | |
tree | cd623ba15f2144a7d523bda6db25843c5d18e963 /gcc/cp/lambda.c | |
parent | cc14602e32f0ba0b6b7628c487bfa1441c2d78f4 (diff) | |
download | gcc-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.c | 9 |
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); |