diff options
author | Evan Cheng <evan.cheng@apple.com> | 2010-06-16 07:35:02 +0000 |
---|---|---|
committer | Evan Cheng <evan.cheng@apple.com> | 2010-06-16 07:35:02 +0000 |
commit | 46df4eb46e784036cf895db271fe29e1cf2a975a (patch) | |
tree | 7a7225e258b7af507f92aec209f538b3bcf78671 /lib/Target/ARM/ARMISelLowering.cpp | |
parent | ffd33cd36494cf29a0b0c80f00ed1a51b599b31f (diff) | |
download | external_llvm-46df4eb46e784036cf895db271fe29e1cf2a975a.tar.gz external_llvm-46df4eb46e784036cf895db271fe29e1cf2a975a.tar.bz2 external_llvm-46df4eb46e784036cf895db271fe29e1cf2a975a.zip |
Make post-ra scheduling, anti-dep breaking, and register scavenger (conservatively) aware of predicated instructions. This enables ARM to move if-conversion before post-ra scheduler.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@106091 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Target/ARM/ARMISelLowering.cpp')
-rw-r--r-- | lib/Target/ARM/ARMISelLowering.cpp | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/Target/ARM/ARMISelLowering.cpp b/lib/Target/ARM/ARMISelLowering.cpp index 1a35f6f78a..78ce2f0f8f 100644 --- a/lib/Target/ARM/ARMISelLowering.cpp +++ b/lib/Target/ARM/ARMISelLowering.cpp @@ -62,6 +62,11 @@ EnableARMLongCalls("arm-long-calls", cl::Hidden, cl::desc("Generate calls via indirect call instructions."), cl::init(false)); +static cl::opt<bool> +ARMInterworking("arm-interworking", cl::Hidden, + cl::desc("Enable / disable ARM interworking (for debugging only)"), + cl::init(true)); + static bool CC_ARM_APCS_Custom_f64(unsigned &ValNo, EVT &ValVT, EVT &LocVT, CCValAssign::LocInfo &LocInfo, ISD::ArgFlagsTy &ArgFlags, @@ -1188,7 +1193,7 @@ ARMTargetLowering::LowerCall(SDValue Chain, SDValue Callee, getTargetMachine().getRelocationModel() != Reloc::Static; isARMFunc = !Subtarget->isThumb() || isStub; // ARM call to a local ARM function is predicable. - isLocalARMFunc = !Subtarget->isThumb() && !isExt; + isLocalARMFunc = !Subtarget->isThumb() && (!isExt || !ARMInterworking); // tBX takes a register source operand. if (isARMFunc && Subtarget->isThumb1Only() && !Subtarget->hasV5TOps()) { unsigned ARMPCLabelIndex = AFI->createConstPoolEntryUId(); |