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

            Bug ID: 93549
           Summary: [10 Regression] ICE / Segfault in constexpr expansion
                    involving vector_size(16) short COND_EXPR
           Product: gcc
           Version: 10.0
            Status: UNCONFIRMED
          Keywords: ice-on-valid-code
          Severity: normal
          Priority: P3
         Component: c++
          Assignee: unassigned at gcc dot gnu.org
          Reporter: kretz at kde dot org
  Target Milestone: ---

Test case (https://godbolt.org/z/_ErsXE):

struct simd {
  using _Short8 [[gnu::vector_size(16)]] = short;
  _Short8 _M_data;
  constexpr simd(short x) : _M_data{x, x, x, x, x, x, x, x} {}
  constexpr friend unsigned operator==(simd __lhs, simd __rhs) {
    _Short8 __tmp = __lhs._M_data == __rhs._M_data;
    using _UShort = unsigned short;
    auto __bools = __tmp ? _UShort(1) : _UShort(0);
    unsigned __bits = 0;
    for (int i = 0; i < 8; ++i)
      __bits |= __bools[i] << i;
    return __bits;
  }
};
auto f()
{
  constexpr auto tmp = simd(1) == simd(2);
  return tmp;
}

internal compiler error: Segmentation fault
   21 |   constexpr auto tmp = simd(1) == simd(2);
      |                                         ^
0xfeaf4f crash_signal
        /home/mkretz/src/gcc/gcc/toplev.c:328
0x8da817 find_array_ctor_elt
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:2950
0x8e8e80 cxx_eval_array_reference
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:3202
0x8df51a cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5635
0x8de093 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5746
0x8dd872 cxx_eval_binary_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:2751
0x8dd872 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5612
0x8de093 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5746
0x8dd897 cxx_eval_binary_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:2757
0x8dd897 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5612
0x8e72be cxx_eval_store_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:4294
0x8de545 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5357
0x8de093 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5746
0x8ddb36 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:6002
0x8def29 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5424
0x8dde77 cxx_eval_loop_expr
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:4910
0x8dde77 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5972
0x8df45d cxx_eval_statement_list
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:4837
0x8df45d cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5873
0x8de969 cxx_eval_constant_expression
        /home/mkretz/src/gcc/gcc/cp/constexpr.c:5877

Reply via email to