This is the mail archive of the gcc-bugs@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[Bug c++/79681] New: ICE with constexpr and bitfield


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.]

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]