Fix PR82396: qsort comparator non-negative on sorted output
authorWilco Dijkstra <wdijkstr@arm.com>
Wed, 4 Oct 2017 10:27:26 +0000 (10:27 +0000)
committerWilco Dijkstra <wilco@gcc.gnu.org>
Wed, 4 Oct 2017 10:27:26 +0000 (10:27 +0000)
commit3e3d1b2326f7c78279275c91b21de38c388ff8fe
tree5e3794a5b1c92bc034a62985bd7770515f6d6b46
parent26596ee50d8506ec255784646a20e8edfa0ff3b4
Fix PR82396: qsort comparator non-negative on sorted output

r253236 broke AArch64 bootstrap. Earlier revision r253071 changed scheduling
behaviour on AArch64 as autopref scheduling no longer checks the base.

This patch fixes the bootstrap failure and cleans up autopref scheduling.
The code is greatly simplified.  Sort accesses on the offset first, and
only if the offsets are the same fall back to other comparisons in
rank_for_schedule.  This doesn't at all restore the original behaviour
since we no longer compare the base address, but it now defines a total
sorting order.  More work will be required to improve the sorting so
that only loads/stores with the same base are affected.

    gcc/
        PR rtl-optimization/82396
        * haifa-sched.c (autopref_multipass_init): Simplify
        initialization.
        (autopref_rank_data): Simplify sort order.
        * sched-int.h (autopref_multipass_data_): Remove
        multi_mem_insn_p, min_offset and max_offset.

From-SVN: r253399
gcc/ChangeLog
gcc/haifa-sched.c
gcc/sched-int.h