https://gcc.gnu.org/bugzilla/show_bug.cgi?id=88528
Bug ID: 88528 Summary: Regression in gcc 7.4 Product: gcc Version: 7.4.0 Status: UNCONFIRMED Severity: normal Priority: P3 Component: c++ Assignee: unassigned at gcc dot gnu.org Reporter: proski at gnu dot org Target Milestone: --- gcc 7.4.0 fails to compile some code that could be compiled with earlier version of gcc 7.x. I don't see that issue with gcc 4.9.4, 5.5.0, 6.5.0 and 8.1.0. The issue still exists with the current gcc-7-branch (git revision c51441f7f92fe9f4a0a452c1f8d283751ad463c5, timestamp 20181217). The code: template <int size> struct A { const bool is_valid; operator bool() const { return is_valid; } }; template <class T> bool check_a() { const A<0> a {}; const bool a_valid {a}; return a_valid; } The output with the current gcc from the gcc-7-branch: $ /opt/gcc/bin/gcc -std=c++14 -c test.cpp test.cpp: In function ‘bool check_a()’: test.cpp:15:24: internal compiler error: unexpected expression ‘(bool)a’ of kind implicit_conv_expr const bool a_valid {a}; ^ 0x6e2a5d cxx_eval_constant_expression /home/roskinp/src/gcc/gcc/cp/constexpr.c:4697 0x6e4454 cxx_eval_outermost_constant_expr /home/roskinp/src/gcc/gcc/cp/constexpr.c:4755 0x6e6391 maybe_constant_init(tree_node*, tree_node*) /home/roskinp/src/gcc/gcc/cp/constexpr.c:5082 0x603c2f store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) /home/roskinp/src/gcc/gcc/cp/typeck2.c:832 0x5c105d check_initializer /home/roskinp/src/gcc/gcc/cp/decl.c:6377 0x5c5691 cp_finish_decl(tree_node*, tree_node*, bool, tree_node*, int) /home/roskinp/src/gcc/gcc/cp/decl.c:6953 0x654d7f cp_parser_init_declarator /home/roskinp/src/gcc/gcc/cp/parser.c:19468 0x6555cd cp_parser_simple_declaration /home/roskinp/src/gcc/gcc/cp/parser.c:12844 0x656295 cp_parser_block_declaration /home/roskinp/src/gcc/gcc/cp/parser.c:12669 0x656bb9 cp_parser_declaration_statement /home/roskinp/src/gcc/gcc/cp/parser.c:12279 0x638247 cp_parser_statement /home/roskinp/src/gcc/gcc/cp/parser.c:10754 0x63900d cp_parser_statement_seq_opt /home/roskinp/src/gcc/gcc/cp/parser.c:11098 0x6390b7 cp_parser_compound_statement /home/roskinp/src/gcc/gcc/cp/parser.c:11052 0x649f00 cp_parser_function_body /home/roskinp/src/gcc/gcc/cp/parser.c:21521 0x649f00 cp_parser_ctor_initializer_opt_and_function_body /home/roskinp/src/gcc/gcc/cp/parser.c:21559 0x6508f0 cp_parser_function_definition_after_declarator /home/roskinp/src/gcc/gcc/cp/parser.c:26353 0x6551dd cp_parser_function_definition_from_specifiers_and_declarator /home/roskinp/src/gcc/gcc/cp/parser.c:26265 0x6551dd cp_parser_init_declarator /home/roskinp/src/gcc/gcc/cp/parser.c:19247 0x63430a cp_parser_single_declaration /home/roskinp/src/gcc/gcc/cp/parser.c:26811 0x6501ec cp_parser_template_declaration_after_parameters /home/roskinp/src/gcc/gcc/cp/parser.c:26415 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <https://gcc.gnu.org/bugs/> for instructions.