[ARM] Don't use the Machine Scheduler for cortex-m at minsize
authorDavid Green <david.green@arm.com>
Wed, 15 May 2019 12:58:02 +0000 (12:58 +0000)
committerDavid Green <david.green@arm.com>
Wed, 15 May 2019 12:58:02 +0000 (12:58 +0000)
commit0582b22f10205c61d10531e4a6fa66c5048dc15c
tree30c258c265b875e2dbc84bc9b56113156f6326b1
parentd2d0f46cd2ae0684afa58d73e5effc1a197481d4
[ARM] Don't use the Machine Scheduler for cortex-m at minsize

The new cortex-m schedule in rL360768 helps performance, but can increase the
amount of high-registers used. This, on average, ends up increasing the
codesize by a fair amount (because less instructions are converted from T2 to
T1). On cortex-m at -Oz, where we are quite size-paranoid, it is better to use
the existing DAG scheduler with the RegPressure scheduling preference (at least
until the issues around T2 vs T1 instructions can be improved).

I have also made sure that the Sched::RegPressure dag scheduler is always
chosen for MinSize.

The test shows one case where we increase the number of registers used.

Differential Revision: https://reviews.llvm.org/D61882

llvm-svn: 360769
llvm/lib/Target/ARM/ARMISelLowering.cpp
llvm/lib/Target/ARM/ARMSubtarget.cpp
llvm/test/CodeGen/Thumb2/m4-sched-regs.ll