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

            Bug ID: 99469
           Summary: ICE: qsort checking failed with selective scheduling
                    on aarch64
           Product: gcc
           Version: 11.0
            Status: UNCONFIRMED
          Severity: normal
          Priority: P3
         Component: rtl-optimization
          Assignee: unassigned at gcc dot gnu.org
          Reporter: acoplan at gcc dot gnu.org
  Target Milestone: ---

The following fails:

$ cat test.c
typedef struct {
  int a[3];
} s;
s ss[1][5][8];

int g();
void h(s);
int foo(char *, ...);

void f() {
  int a, b, c, d = 0;
  if (g())
    d = 1;
  for (; a; a++) {
    if (d)
      foo("a", "");
    h(ss[a][b][c]);
    if (d)
      foo("a");
  }
}

$ aarch64-linux-gnu-gcc -c test.c -O2 -fselective-scheduling
-fselective-scheduling2 -fsel-sched-pipelining -mtune=cortex-a53
test.c: In function ‘f’:
test.c:21:1: error: qsort comparator not anti-symmetric: -1, -1
   21 | }
      | ^
during RTL pass: sched2
test.c:21:1: internal compiler error: qsort checking failed
0x1c2b727 qsort_chk_error
        /home/alecop01/toolchain/src/gcc/gcc/vec.c:214
0x1c2bc7d qsort_chk(void*, unsigned long, unsigned long, int (*)(void const*,
void const*, void*), void*)
        /home/alecop01/toolchain/src/gcc/gcc/vec.c:258
0x1c62d8e gcc_qsort(void*, unsigned long, unsigned long, int (*)(void const*,
void const*))
        /home/alecop01/toolchain/src/gcc/gcc/sort.cc:270
0xda2728 vec<_expr*, va_heap, vl_embed>::qsort(int (*)(void const*, void
const*))
        /home/alecop01/toolchain/src/gcc/gcc/vec.h:1148
0xda2728 vec<_expr*, va_heap, vl_ptr>::qsort(int (*)(void const*, void const*))
        /home/alecop01/toolchain/src/gcc/gcc/vec.h:2041
0xda2728 fill_vec_av_set
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:3717
0xda65d2 fill_ready_list
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:4014
0xda65d2 find_best_expr
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:4374
0xda65d2 fill_insns
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:5535
0xda65d2 schedule_on_fences
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:7353
0xda65d2 sel_sched_region_2
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:7491
0xda9508 sel_sched_region_1
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:7533
0xda9e2f sel_sched_region(int)
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:7634
0xdab3cf run_selective_scheduling()
        /home/alecop01/toolchain/src/gcc/gcc/sel-sched.c:7720
0xd85b1c rest_of_handle_sched2
        /home/alecop01/toolchain/src/gcc/gcc/sched-rgn.c:3738
0xd85b1c execute
        /home/alecop01/toolchain/src/gcc/gcc/sched-rgn.c:3882
Please submit a full bug report,
with preprocessed source if appropriate.
Please include the complete backtrace with any bug report.
See <https://gcc.gnu.org/bugs/> for instructions.

Reply via email to