summaryrefslogtreecommitdiffstats
path: root/llvm/lib
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2019-01-23 21:10:48 +0000
committerReid Kleckner <rnk@google.com>2019-01-23 21:10:48 +0000
commitf9ebacfd299c7711b5b3a3fae5f36b61e14a580e (patch)
treed6cfb8f67016626c3de9d90032362c23a17921bf /llvm/lib
parenta010cf615a0b83b2e2511eeb94a46f8c5c0370e1 (diff)
downloadbcm5719-llvm-f9ebacfd299c7711b5b3a3fae5f36b61e14a580e.tar.gz
bcm5719-llvm-f9ebacfd299c7711b5b3a3fae5f36b61e14a580e.zip
Revert r351938 "[ARM] Alter the register allocation order for minsize on Thumb2"
This change caused fatal backend errors when compiling a file in libvpx for Android. llvm-svn: 351979
Diffstat (limited to 'llvm/lib')
-rw-r--r--llvm/lib/Target/ARM/ARMRegisterInfo.td31
1 files changed, 4 insertions, 27 deletions
diff --git a/llvm/lib/Target/ARM/ARMRegisterInfo.td b/llvm/lib/Target/ARM/ARMRegisterInfo.td
index 7b8dc905926..b5179c37621 100644
--- a/llvm/lib/Target/ARM/ARMRegisterInfo.td
+++ b/llvm/lib/Target/ARM/ARMRegisterInfo.td
@@ -204,21 +204,13 @@ def FPINST2 : ARMReg<10, "fpinst2">;
def GPR : RegisterClass<"ARM", [i32], 32, (add (sequence "R%u", 0, 12),
SP, LR, PC)> {
// Allocate LR as the first CSR since it is always saved anyway.
- // For Thumb2, using LR would force 32bit Thumb2 instructions, not the smaller
- // Thumb1 ones. It is a little better for codesize on average to use the
- // default order.
// For Thumb1 mode, we don't want to allocate hi regs at all, as we don't
// know how to spill them. If we make our prologue/epilogue code smarter at
// some point, we can go back to using the above allocation orders for the
// Thumb1 instructions that know how to use hi regs.
let AltOrders = [(add LR, GPR), (trunc GPR, 8)];
let AltOrderSelect = [{
- if (MF.getSubtarget<ARMSubtarget>().isThumb1Only())
- return 2;
- if (MF.getSubtarget<ARMSubtarget>().isThumb2() &&
- MF.getFunction().optForMinSize())
- return 0;
- return 1;
+ return 1 + MF.getSubtarget<ARMSubtarget>().isThumb1Only();
}];
let DiagnosticString = "operand must be a register in range [r0, r15]";
}
@@ -229,12 +221,7 @@ def GPR : RegisterClass<"ARM", [i32], 32, (add (sequence "R%u", 0, 12),
def GPRnopc : RegisterClass<"ARM", [i32], 32, (sub GPR, PC)> {
let AltOrders = [(add LR, GPRnopc), (trunc GPRnopc, 8)];
let AltOrderSelect = [{
- if (MF.getSubtarget<ARMSubtarget>().isThumb1Only())
- return 2;
- if (MF.getSubtarget<ARMSubtarget>().isThumb2() &&
- MF.getFunction().optForMinSize())
- return 0;
- return 1;
+ return 1 + MF.getSubtarget<ARMSubtarget>().isThumb1Only();
}];
let DiagnosticString = "operand must be a register in range [r0, r14]";
}
@@ -245,12 +232,7 @@ def GPRnopc : RegisterClass<"ARM", [i32], 32, (sub GPR, PC)> {
def GPRwithAPSR : RegisterClass<"ARM", [i32], 32, (add (sub GPR, PC), APSR_NZCV)> {
let AltOrders = [(add LR, GPRnopc), (trunc GPRnopc, 8)];
let AltOrderSelect = [{
- if (MF.getSubtarget<ARMSubtarget>().isThumb1Only())
- return 2;
- if (MF.getSubtarget<ARMSubtarget>().isThumb2() &&
- MF.getFunction().optForMinSize())
- return 0;
- return 1;
+ return 1 + MF.getSubtarget<ARMSubtarget>().isThumb1Only();
}];
let DiagnosticString = "operand must be a register in range [r0, r14] or apsr_nzcv";
}
@@ -271,12 +253,7 @@ def GPRsp : RegisterClass<"ARM", [i32], 32, (add SP)> {
def rGPR : RegisterClass<"ARM", [i32], 32, (sub GPR, SP, PC)> {
let AltOrders = [(add LR, rGPR), (trunc rGPR, 8)];
let AltOrderSelect = [{
- if (MF.getSubtarget<ARMSubtarget>().isThumb1Only())
- return 2;
- if (MF.getSubtarget<ARMSubtarget>().isThumb2() &&
- MF.getFunction().optForMinSize())
- return 0;
- return 1;
+ return 1 + MF.getSubtarget<ARMSubtarget>().isThumb1Only();
}];
let DiagnosticType = "rGPR";
}
OpenPOWER on IntegriCloud