https://gcc.gnu.org/bugzilla/show_bug.cgi?id=70377
Martin Sebor <msebor at gcc dot gnu.org> changed: What |Removed |Added ---------------------------------------------------------------------------- Keywords| |error-recovery, | |ice-on-invalid-code Status|UNCONFIRMED |NEW Last reconfirmed| |2017-03-16 CC| |msebor at gcc dot gnu.org Version|unknown |5.4.1 Ever confirmed|0 |1 Known to fail| |5.4.0 --- Comment #1 from Martin Sebor <msebor at gcc dot gnu.org> --- The ICE is reproducible with 5.x but it's gone in 6.x and 7.0 (those fail to compile the code due to what looks like a bug in the test case, hence ice-on-invalid-code, error-recovery). The GCC 5 ICE for the submitted test case is below: t.C:19:1: error: non-constant condition for static assertion static_assert( simple_find( some_ints, 10 ) == static_cast<size_t>( 0 ), "" ); ^ t.C:19:27: error: ‘constexpr size_t simple_find(const std::array<int, N>&, const int&) [with long unsigned int N = 3ul; size_t = long unsigned int]’ called in a constant expression static_assert( simple_find( some_ints, 10 ) == static_cast<size_t>( 0 ), "" ); ^ t.C:6:18: note: ‘constexpr size_t simple_find(const std::array<int, N>&, const int&) [with long unsigned int N = 3ul; size_t = long unsigned int]’ is not usable as a constexpr function because: constexpr size_t simple_find(const std::array<int, N> &arg_array, ^ t.C:6:18: sorry, unimplemented: unexpected AST of kind loop_expr t.C:6:18: internal compiler error: in potential_constant_expression_1, at cp/constexpr.c:4780 0x9ab300 potential_constant_expression_1 /src/gcc/5-branch/gcc/cp/constexpr.c:4780 0x9a9a50 potential_constant_expression_1 /src/gcc/5-branch/gcc/cp/constexpr.c:4376 0x9a9a50 potential_constant_expression_1 /src/gcc/5-branch/gcc/cp/constexpr.c:4376 0x9aa7c3 potential_constant_expression_1 /src/gcc/5-branch/gcc/cp/constexpr.c:4564 0x9a9a50 potential_constant_expression_1 /src/gcc/5-branch/gcc/cp/constexpr.c:4376 0x9aa7c3 potential_constant_expression_1 /src/gcc/5-branch/gcc/cp/constexpr.c:4564 0x9ab3d4 require_potential_rvalue_constant_expression(tree_node*) /src/gcc/5-branch/gcc/cp/constexpr.c:4821 0x99c9cc explain_invalid_constexpr_fn(tree_node*) /src/gcc/5-branch/gcc/cp/constexpr.c:853 0x99df02 cxx_eval_call_expression /src/gcc/5-branch/gcc/cp/constexpr.c:1271 0x9a5acf cxx_eval_constant_expression /src/gcc/5-branch/gcc/cp/constexpr.c:3331 0x99f55f cxx_eval_binary_expression /src/gcc/5-branch/gcc/cp/constexpr.c:1648 0x9a6b0a cxx_eval_constant_expression /src/gcc/5-branch/gcc/cp/constexpr.c:3600 0x9a7b35 cxx_eval_outermost_constant_expr /src/gcc/5-branch/gcc/cp/constexpr.c:3864 0x9a8191 cxx_constant_value(tree_node*, tree_node*) /src/gcc/5-branch/gcc/cp/constexpr.c:3953 0x91a03d finish_static_assert(tree_node*, tree_node*, unsigned int, bool) /src/gcc/5-branch/gcc/cp/semantics.c:7203 0x86bb74 cp_parser_static_assert /src/gcc/5-branch/gcc/cp/parser.c:12233 0x86ace6 cp_parser_block_declaration /src/gcc/5-branch/gcc/cp/parser.c:11478 0x86aa89 cp_parser_declaration /src/gcc/5-branch/gcc/cp/parser.c:11379 0x86a63e cp_parser_declaration_seq_opt /src/gcc/5-branch/gcc/cp/parser.c:11265 0x85db76 cp_parser_translation_unit /src/gcc/5-branch/gcc/cp/parser.c:4100 Please submit a full bug report, with preprocessed source if appropriate. Please include the complete backtrace with any bug report. See <http://gcc.gnu.org/bugs.html> for instructions.