https://gcc.gnu.org/bugzilla/show_bug.cgi?id=98193

            Bug ID: 98193
           Summary: [11 Regression] ICE in native_encode_initializer, at
                    fold-const.c:8454/8424
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: gs...@t-online.de
  Target Milestone: ---

Following two variants are derived from testfile bit-cast3.C (new).
Not really a regression, but with the latest snapshot (20201206) :


$ cat z1.C
template <typename To, typename From>
constexpr To
bit_cast (const From &from)
{
  return __builtin_bit_cast (To, from);
}
struct J
{
  long int a, b : 11, h;
};
struct K
{
  long int a, b, c;
  constexpr bool operator == (K x)
  {
    return x.a;
  }
};
static_assert (bit_cast <K> (J{}) == K{}, "");


$ g++-11-20201206 -c z1.C
z1.C:19:33:   in 'constexpr' expansion of 'bit_cast<K, J>(J{})'
z1.C:19:46: internal compiler error: in native_encode_initializer, at
fold-const.c:8454
   19 | static_assert (bit_cast <K> (J{}) == K{}, "");
      |                                              ^
0x9b3baa native_encode_initializer(tree_node*, unsigned char*, int, int,
unsigned char*)
        ../../gcc/fold-const.c:8454
0x6819e8 cxx_eval_bit_cast
        ../../gcc/cp/constexpr.c:4105
0x6819e8 cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6894
0x686678 cxx_eval_store_expression
        ../../gcc/cp/constexpr.c:5397
0x67f47a cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6217
0x67e8dd cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6229
0x67ef8e cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6286
0x67db44 cxx_eval_call_expression
        ../../gcc/cp/constexpr.c:2692
0x67f20a cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6108
0x68167d cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6196
0x67edb5 cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6335
0x67c4f7 cxx_bind_parameters_in_call
        ../../gcc/cp/constexpr.c:1594
0x67c4f7 cxx_eval_call_expression
        ../../gcc/cp/constexpr.c:2524
0x67f20a cxx_eval_constant_expression
        ../../gcc/cp/constexpr.c:6108
0x68215b cxx_eval_outermost_constant_expr
        ../../gcc/cp/constexpr.c:7117
0x684ddc maybe_constant_value(tree_node*, tree_node*, bool)
        ../../gcc/cp/constexpr.c:7372
0x7a06cd finish_static_assert(tree_node*, tree_node*, unsigned int, bool, bool)
        ../../gcc/cp/semantics.c:9918
0x726de4 cp_parser_static_assert
        ../../gcc/cp/parser.c:14992
0x75846a cp_parser_declaration
        ../../gcc/cp/parser.c:13692
0x758d5a cp_parser_translation_unit
        ../../gcc/cp/parser.c:4806

Reply via email to