summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--llvm/lib/Target/Mips/MipsOptimizePICCall.cpp3
-rw-r--r--llvm/test/CodeGen/Mips/call-optimization.ll14
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 }
OpenPOWER on IntegriCloud