[Bug c++/81032] New: [5/6/7/8 Regression] ICE with lambda and broken constexpr
reichelt at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Fri Jun 9 06:51:00 GMT 2017
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=81032
Bug ID: 81032
Summary: [5/6/7/8 Regression] ICE with lambda and broken
constexpr
Product: gcc
Version: unknown
Status: UNCONFIRMED
Keywords: error-recovery, ice-on-invalid-code
Severity: normal
Priority: P3
Component: c++
Assignee: unassigned at gcc dot gnu.org
Reporter: reichelt at gcc dot gnu.org
Target Milestone: ---
The following invalid code snippet triggers an ICE since GCC 5.2.0
(when compiled with -std=c++1y):
================================================
template<typename T> constexpr void foo(T t)
{
constexpr int i = t;
[=](auto){ return i; }(0);
}
void bar()
{
foo(0);
}
================================================
bug.cc: In instantiation of 'constexpr void foo(T) [with T = int]':
bug.cc:9:8: required from here
bug.cc:3:17: error: 't' is not a constant expression
constexpr int i = t;
^
bug.cc: In instantiation of 'foo(T)::<lambda(auto:1)> [with auto:1 = int; T =
int]':
bug.cc:4:25: required from 'constexpr void foo(T) [with T = int]'
bug.cc:9:8: required from here
bug.cc:4:24: internal compiler error: in finish_member_declaration, at
cp/semantics.c:3003
[=](auto){ return i; }(0);
^
0x63fa91 finish_member_declaration(tree_node*)
../../gcc/gcc/cp/semantics.c:3000
0x8b99bf add_capture(tree_node*, tree_node*, tree_node*, bool, bool)
../../gcc/gcc/cp/lambda.c:591
0x8b9f6e add_default_capture(tree_node*, tree_node*, tree_node*)
../../gcc/gcc/cp/lambda.c:653
0x95bd2b tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/gcc/cp/pt.c:17821
0x944bf4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:16521
0x943a23 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:15781
0x9447d6 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:15998
0x9447d6 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:15998
0x971e2b instantiate_decl(tree_node*, bool, bool)
../../gcc/gcc/cp/pt.c:22963
0x89414e maybe_instantiate_decl
../../gcc/gcc/cp/decl2.c:4994
0x896248 mark_used(tree_node*, int)
../../gcc/gcc/cp/decl2.c:5094
0x7f6bcc build_over_call
../../gcc/gcc/cp/call.c:8102
0x804a03 build_op_call_1
../../gcc/gcc/cp/call.c:4509
0x804a03 build_op_call(tree_node*, vec<tree_node*, va_gc, vl_embed>**, int)
../../gcc/gcc/cp/call.c:4535
0x98d17d finish_call_expr(tree_node*, vec<tree_node*, va_gc, vl_embed>**, bool,
bool, int)
../../gcc/gcc/cp/semantics.c:2496
0x95bae3 tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool,
bool)
../../gcc/gcc/cp/pt.c:17414
0x944bf4 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:16521
0x943100 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:15785
0x94315f tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:15771
0x9447d6 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool)
../../gcc/gcc/cp/pt.c:15998
Please submit a full bug report, [etc.]
More information about the Gcc-bugs
mailing list