https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84655
Bug ID: 84655 Summary: internal compiler error: unexpected expression 'a' of kind template_parm_index Product: gcc Version: 8.0.1 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: vegard.nossum at gmail dot com Target Milestone: --- Input (you gotta love this one!): template<int... a> struct b { int &&c; int d[] = [] { auto f(a); }; } const __attribute__((noinline(b<>()))); Output: $ xgcc -x c++ -S - <stdin>: In lambda function: <stdin>:4:23: internal compiler error: unexpected expression 'a' of kind template_parm_index 0xa3d06b cxx_eval_constant_expression /home/vegard/git/gcc/gcc/cp/constexpr.c:4767 0xa4e0da cxx_eval_outermost_constant_expr /home/vegard/git/gcc/gcc/cp/constexpr.c:4827 0xa5b966 maybe_constant_value(tree_node*, tree_node*) /home/vegard/git/gcc/gcc/cp/constexpr.c:5044 0xaba942 cp_fully_fold(tree_node*) /home/vegard/git/gcc/gcc/cp/cp-gimplify.c:2040 0x142d41f store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) /home/vegard/git/gcc/gcc/cp/typeck2.c:848 0xb48878 check_initializer /home/vegard/git/gcc/gcc/cp/decl.c:6430 0xbdcd8e cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) /home/vegard/git/gcc/gcc/cp/decl.c:7084 0x10cc38d tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/vegard/git/gcc/gcc/cp/pt.c:16331 0x10c0128 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/vegard/git/gcc/gcc/cp/pt.c:16464 0x10c0128 tsubst_expr(tree_node*, tree_node*, int, tree_node*, bool) /home/vegard/git/gcc/gcc/cp/pt.c:16464 0x11d483f tsubst_lambda_expr(tree_node*, tree_node*, int, tree_node*) /home/vegard/git/gcc/gcc/cp/pt.c:17203 0x10f7dcb tsubst_copy_and_build(tree_node*, tree_node*, int, tree_node*, bool, bool) /home/vegard/git/gcc/gcc/cp/pt.c:18486 0xd27a93 get_nsdmi(tree_node*, bool, int) /home/vegard/git/gcc/gcc/cp/init.c:581 0xdc6d74 walk_field_subobs /home/vegard/git/gcc/gcc/cp/method.c:1354 0xdd46a3 synthesized_method_walk /home/vegard/git/gcc/gcc/cp/method.c:1744 0xde62f2 get_defaulted_eh_spec(tree_node*, int) /home/vegard/git/gcc/gcc/cp/method.c:1776 0x11d647a maybe_instantiate_noexcept(tree_node*, int) /home/vegard/git/gcc/gcc/cp/pt.c:23088 0xc64811 mark_used(tree_node*, int) /home/vegard/git/gcc/gcc/cp/decl2.c:5229 0x921ac0 build_over_call /home/vegard/git/gcc/gcc/cp/call.c:7680 0x9346ff build_new_method_call_1 /home/vegard/git/gcc/gcc/cp/call.c:9285 $ xgcc --version xgcc (GCC) 8.0.1 20180301 (experimental) Built from git c435a9e730c6e8f10da09d58b4fc9aaeb401b0d5 (r258097). 7.3.0 seems to be fine with this. Test case was minimised by C-Reduce.