https://gcc.gnu.org/bugzilla/show_bug.cgi?id=79681
Bug ID: 79681 Summary: ICE with constexpr and bitfield Product: gcc Version: 7.0 Status: UNCONFIRMED Keywords: ice-on-valid-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 valid code snippet triggers an ICE since GCC 5.1.0: ======================== struct A { int i : 4; }; constexpr bool foo() { A x[] = { 1 }; return x[0].i; } bool b = foo(); ======================== bug.cc:12:13: in constexpr expansion of 'foo()' bug.cc:12:14: internal compiler error: tree check: expected field_decl, have integer_cst in bit_position, at tree.c:3022 bool b = foo(); ^ 0xffc41c tree_check_failed(tree_node const*, char const*, int, char const*, ...) ../../gcc/gcc/tree.c:9813 0xffc5b8 tree_check(tree_node const*, char const*, int, char const*, tree_code) ../../gcc/gcc/tree.h:3320 0xffc5b8 bit_position(tree_node const*) ../../gcc/gcc/tree.c:3022 0x83a8c3 cxx_eval_bit_field_ref ../../gcc/gcc/cp/constexpr.c:2472 0x83a8c3 cxx_eval_constant_expression ../../gcc/gcc/cp/constexpr.c:4276 0x844b12 cxx_eval_binary_expression ../../gcc/gcc/cp/constexpr.c:1935 0x83a59a cxx_eval_constant_expression ../../gcc/gcc/cp/constexpr.c:4233 0x844b12 cxx_eval_binary_expression ../../gcc/gcc/cp/constexpr.c:1935 0x83a59a cxx_eval_constant_expression ../../gcc/gcc/cp/constexpr.c:4233 0x83e5ed cxx_eval_store_expression ../../gcc/gcc/cp/constexpr.c:3530 0x83a1b8 cxx_eval_constant_expression ../../gcc/gcc/cp/constexpr.c:4051 0x83c629 cxx_eval_constant_expression ../../gcc/gcc/cp/constexpr.c:4063 0x83ab94 cxx_eval_statement_list ../../gcc/gcc/cp/constexpr.c:3738 0x83ab94 cxx_eval_constant_expression ../../gcc/gcc/cp/constexpr.c:4434 0x83ad22 cxx_eval_constant_expression ../../gcc/gcc/cp/constexpr.c:4440 0x8390f2 cxx_eval_call_expression ../../gcc/gcc/cp/constexpr.c:1641 0x83ad43 cxx_eval_constant_expression ../../gcc/gcc/cp/constexpr.c:3973 0x840ace cxx_eval_outermost_constant_expr ../../gcc/gcc/cp/constexpr.c:4615 0x844194 maybe_constant_init(tree_node*, tree_node*) ../../gcc/gcc/cp/constexpr.c:4938 0x6b4c64 store_init_value(tree_node*, tree_node*, vec<tree_node*, va_gc, vl_embed>**, int) ../../gcc/gcc/cp/typeck2.c:819 Please submit a full bug report, [etc.]