https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83513
Bug ID: 83513 Summary: [8 Regression] ICE: qsort checking failed (error: qsort comparator non-negative on sorted output: 3) in fill_vec_av_set in selective scheduler Product: gcc Version: 8.0 Status: UNCONFIRMED Keywords: ice-checking, ice-on-valid-code Severity: normal Priority: P3 Component: rtl-optimization Assignee: unassigned at gcc dot gnu.org Reporter: asolokha at gmx dot com Target Milestone: --- gcc-8.0.0-alpha20171217 snapshot (r255766) ICEs when compiling the following snippet w/ -O1 (-O2, -Os) -fschedule-insns -fselective-scheduling -fno-guess-branch-probability: void oh (long int qc, short int de) { { long int uf = 0; int *xu, *gx = &uf; p6: *gx = (qc == 0) ? -1 : (qc - uf); if (de == *gx) { ++*xu; de = *xu; } else de = qc; } goto p6; } % gcc-8.0.0-alpha20171217 -O1 -fschedule-insns -fselective-scheduling -fno-guess-branch-probability -c -w vugfco5g.c vugfco5g.c: In function 'oh': vugfco5g.c:20:1: error: qsort comparator non-negative on sorted output: 3 } ^ during RTL pass: sched1 vugfco5g.c:20:1: internal compiler error: qsort checking failed 0x829340 qsort_chk_error /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/vec.c:222 0x8293c7 qsort_chk(void*, unsigned long, unsigned long, int (*)(void const*, void const*)) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/vec.c:274 0xd069c4 vec<_expr*, va_heap, vl_embed>::qsort(int (*)(void const*, void const*)) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/vec.h:1050 0xd069c4 vec<_expr*, va_heap, vl_ptr>::qsort(int (*)(void const*, void const*)) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/vec.h:1812 0xd069c4 fill_vec_av_set /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:3725 0xd089ea fill_ready_list /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:4022 0xd089ea find_best_expr /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:4382 0xd089ea fill_insns /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:5539 0xd0ae50 schedule_on_fences /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:7356 0xd0ae50 sel_sched_region_2 /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:7494 0xd0c588 sel_sched_region_1 /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:7536 0xd0c588 sel_sched_region(int) /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:7637 0xd0d5e1 run_selective_scheduling() /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sel-sched.c:7713 0xcedadd rest_of_handle_sched /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sched-rgn.c:3715 0xcedadd execute /var/tmp/portage/sys-devel/gcc-8.0.0_alpha20171217/work/gcc-8-20171217/gcc/sched-rgn.c:3825