diff options
| -rw-r--r-- | llvm/lib/Target/Mips/MipsOptimizePICCall.cpp | 3 | ||||
| -rw-r--r-- | llvm/test/CodeGen/Mips/call-optimization.ll | 14 |
2 files changed, 14 insertions, 3 deletions
diff --git a/llvm/lib/Target/Mips/MipsOptimizePICCall.cpp b/llvm/lib/Target/Mips/MipsOptimizePICCall.cpp index 441a2dbec9b..f33857fe628 100644 --- a/llvm/lib/Target/Mips/MipsOptimizePICCall.cpp +++ b/llvm/lib/Target/Mips/MipsOptimizePICCall.cpp @@ -174,9 +174,6 @@ void MBBInfo::postVisit() { // OptimizePICCall methods. bool OptimizePICCall::runOnMachineFunction(MachineFunction &F) { - if (skipFunction(*F.getFunction())) - return false; - if (static_cast<const MipsSubtarget &>(F.getSubtarget()).inMips16Mode()) return false; diff --git a/llvm/test/CodeGen/Mips/call-optimization.ll b/llvm/test/CodeGen/Mips/call-optimization.ll index 762b00effc9..0be5ff2ef6e 100644 --- a/llvm/test/CodeGen/Mips/call-optimization.ll +++ b/llvm/test/CodeGen/Mips/call-optimization.ll @@ -89,3 +89,17 @@ entry: } declare double @ceil(double) + +; Make sure that the MipsOptimizePICCall pass is run even for optnone functions, +; as we have to make sure that jalr uses $t9 for PIC code in order to adhere to +; the MIPS o32 ABI. +define hidden double @foo(double %dbl) #0 { +entry: + ; O32: jalr $25 + %res = call double @sqrt(double %dbl) + ret double %res +} + +declare double @sqrt(double) + +attributes #0 = { noinline optnone } |

