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

            Bug ID: 123144
           Summary: [16 Regression] PowerPC64LE: ICE at -O3 during RTL
                    pass: sched1
           Product: gcc
           Version: 16.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: target
          Assignee: unassigned at gcc dot gnu.org
          Reporter: xxs_chy at outlook dot com
  Target Milestone: ---

Reproducer: https://godbolt.org/z/xEa9fWWEh

Testcase:
#include <stdint.h>
#define BS_VEC(type, num) type __attribute__((vector_size(num * sizeof(type))))
int8_t backsmith_snippet_893(int8_t BS_ARG_1, BS_VEC(uint8_t, 32) BS_ARG_5)
{
    BS_VEC(uint16_t, 8) BS_VAR_0;
    for (;;)
        for (uint64_t BS_INC_1 = 0; BS_INC_1 < 13; BS_INC_1 += 1)
        {
            if (BS_ARG_5[2])
                for (;;)
                    __builtin_convertvector((BS_VEC(int8_t, 16)){},
                                            BS_VEC(uint8_t, 16));
            uint8_t BS_TEMP_59 = __builtin_convertvector(
                __builtin_shufflevector(
                    __builtin_convertvector((BS_VEC(int8_t, 4)){},
                                            BS_VEC(uint16_t, 4)),
                    __builtin_convertvector((BS_VEC(int8_t, 4)){ BS_ARG_1 },
                                            BS_VEC(uint16_t, 4)),
                    4, 2, 2, 2, 6, 3, 0, 0, 3, 2, 1, 2, 4, 0, 1, 4, 2, 0, 3, 6,
                    4, 3, 1, 0, 2, 5, 3, 7, 4, 2, 4, 2),
                BS_VEC(uint8_t, 32))[(BS_INC_1 ? BS_VAR_0[3] : 2) ?: 2];
            uint8_t BS_TEMP_60 = BS_TEMP_59;
            for (; BS_TEMP_60;)
                ;
            BS_VEC(uint32_t, 8)
            BS_TEMP_68 = __builtin_convertvector(
                __builtin_convertvector(
                    (BS_VEC(uint64_t, 8)){ BS_INC_1, BS_INC_1, BS_INC_1,
                                           BS_INC_1, BS_INC_1, BS_INC_1,
                                           BS_INC_1, BS_INC_1 },
                    BS_VEC(uint16_t, 8)),
                BS_VEC(uint32_t, 8));
            BS_VAR_0[BS_INC_1 < 8 ? BS_INC_1 : 0] = BS_TEMP_68[0]
                * BS_TEMP_68[1] * BS_TEMP_68[2] * BS_TEMP_68[3] * BS_TEMP_68[4]
                * 6 * BS_TEMP_68[7];
        }
}

Command:
> powerpc64le-unknown-linux-musl-gcc -O3 test.c

Dump:
during RTL pass: sched1
<source>:37:1: internal compiler error: in model_update_limit_points_in_group,
at haifa-sched.cc:1990
   37 | }
      | ^
0x21ece42 diagnostics::context::diagnostic_impl(rich_location*,
diagnostics::metadata const*, diagnostics::option_id, char const*,
__va_list_tag (*) [1], diagnostics::kind)
        ???:0
0x21e1b6f internal_error(char const*, ...)
        ???:0
0x9affc7 fancy_abort(char const*, int, char const*)
        ???:0
0x200512c schedule_block(basic_block_def**, void*)
        ???:0
Please submit a full bug report, with preprocessed source (by using
-freport-bug).
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.
Compiler returned: 1

Reply via email to