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