[llvm] ffd0b31 - Revert "[ARM] Register pressure with -mthumb forces register reload before each call"
David Green via llvm-commits
llvm-commits at lists.llvm.org
Mon Aug 31 23:40:13 PDT 2020
Author: David Green
Date: 2020-09-01T07:39:54+01:00
New Revision: ffd0b31c7cbaa8322d2963afe6ace4e3a0889ddb
URL: https://github.com/llvm/llvm-project/commit/ffd0b31c7cbaa8322d2963afe6ace4e3a0889ddb
DIFF: https://github.com/llvm/llvm-project/commit/ffd0b31c7cbaa8322d2963afe6ace4e3a0889ddb.diff
LOG: Revert "[ARM] Register pressure with -mthumb forces register reload before each call"
Expensive checks are failing, complaining about additional MMO operands
added to the branch.
Added:
Modified:
llvm/lib/Target/ARM/Thumb1InstrInfo.cpp
llvm/lib/Target/ARM/Thumb1InstrInfo.h
Removed:
llvm/test/CodeGen/ARM/minsize-call-cse-2.ll
llvm/test/CodeGen/ARM/minsize-call-cse-3.ll
################################################################################
diff --git a/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp b/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp
index 7eec05df88ca..79afa378cb62 100644
--- a/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp
+++ b/llvm/lib/Target/ARM/Thumb1InstrInfo.cpp
@@ -152,37 +152,3 @@ bool Thumb1InstrInfo::canCopyGluedNodeDuringSchedule(SDNode *N) const {
return false;
}
-
-MachineInstr *Thumb1InstrInfo::foldMemoryOperandImpl(
- MachineFunction &MF, MachineInstr &MI, ArrayRef<unsigned> Ops,
- MachineBasicBlock::iterator InsertPt, MachineInstr &LoadMI,
- LiveIntervals *LIS) const {
- // Replace:
- // ldr Rd, func address
- // blx Rd
- // with:
- // bl func
-
- if (MI.getOpcode() == ARM::tBLXr && LoadMI.getOpcode() == ARM::tLDRpci &&
- MI.getParent() == LoadMI.getParent()) {
- unsigned CPI = LoadMI.getOperand(1).getIndex();
- const MachineConstantPool *MCP = MF.getConstantPool();
- if (CPI >= MCP->getConstants().size())
- return nullptr;
- const MachineConstantPoolEntry &CPE = MCP->getConstants()[CPI];
- assert(!CPE.isMachineConstantPoolEntry() && "Invalid constpool entry");
- const Function *Callee = dyn_cast<Function>(CPE.Val.ConstVal);
- if (!Callee)
- return nullptr;
- const char *FuncName = MF.createExternalSymbolName(Callee->getName());
- MachineInstrBuilder MIB =
- BuildMI(*MI.getParent(), InsertPt, MI.getDebugLoc(), get(ARM::tBL))
- .add(predOps(ARMCC::AL))
- .addExternalSymbol(FuncName);
- for (auto &MO : MI.implicit_operands())
- MIB.add(MO);
- return MIB.getInstr();
- }
-
- return nullptr;
-}
diff --git a/llvm/lib/Target/ARM/Thumb1InstrInfo.h b/llvm/lib/Target/ARM/Thumb1InstrInfo.h
index bc4da451ca5d..017b7222337c 100644
--- a/llvm/lib/Target/ARM/Thumb1InstrInfo.h
+++ b/llvm/lib/Target/ARM/Thumb1InstrInfo.h
@@ -53,13 +53,6 @@ class Thumb1InstrInfo : public ARMBaseInstrInfo {
const TargetRegisterInfo *TRI) const override;
bool canCopyGluedNodeDuringSchedule(SDNode *N) const override;
-
-protected:
- virtual MachineInstr *foldMemoryOperandImpl(
- MachineFunction &MF, MachineInstr &MI, ArrayRef<unsigned> Ops,
- MachineBasicBlock::iterator InsertPt, MachineInstr &LoadMI,
- LiveIntervals *LIS = nullptr) const override;
-
private:
void expandLoadStackGuard(MachineBasicBlock::iterator MI) const override;
};
diff --git a/llvm/test/CodeGen/ARM/minsize-call-cse-2.ll b/llvm/test/CodeGen/ARM/minsize-call-cse-2.ll
deleted file mode 100644
index 4f9e508c1c97..000000000000
--- a/llvm/test/CodeGen/ARM/minsize-call-cse-2.ll
+++ /dev/null
@@ -1,20 +0,0 @@
-; RUN: llc < %s | FileCheck %s
-
-target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
-target triple = "thumbv6m-arm-none-eabi"
-
-; CHECK-LABEL: f:
-; CHECK: bl g
-; CHECK: blx r
-; CHECK: bl g
-; CHECK: bl g
-define void @f(i32* %p, i32 %x, i32 %y, i32 %z) minsize optsize {
-entry:
- call void @g(i32* %p, i32 %x, i32 %y, i32 %z)
- call void @g(i32* %p, i32 %x, i32 %y, i32 %z)
- call void @g(i32* %p, i32 %x, i32 %y, i32 %z)
- call void @g(i32* %p, i32 %x, i32 %y, i32 %z)
- ret void
-}
-
-declare void @g(i32*,i32,i32,i32)
diff --git a/llvm/test/CodeGen/ARM/minsize-call-cse-3.ll b/llvm/test/CodeGen/ARM/minsize-call-cse-3.ll
deleted file mode 100644
index abe1f0347e5d..000000000000
--- a/llvm/test/CodeGen/ARM/minsize-call-cse-3.ll
+++ /dev/null
@@ -1,16 +0,0 @@
-; RUN: llc < %s
-; Verify that we don't crash on indirect function calls
-; in Thumb1InstrInfo::foldMemoryOperand.
-
-target datalayout = "e-m:e-p:32:32-i64:64-v128:64:128-a:0:32-n32-S64"
-target triple = "thumbv6m-arm-none-eabi"
-
-; Function Attrs: minsize nounwind optsize
-define void @test(i32* %p, i32 %x, i32 %y, i32 %z) {
-entry:
- tail call void inttoptr (i32 19088743 to void (i32*, i32, i32, i32)*)(i32* %p, i32 %x, i32 %y, i32 %z)
- tail call void inttoptr (i32 19088743 to void (i32*, i32, i32, i32)*)(i32* %p, i32 %x, i32 %y, i32 %z)
- tail call void inttoptr (i32 19088743 to void (i32*, i32, i32, i32)*)(i32* %p, i32 %x, i32 %y, i32 %z)
- tail call void inttoptr (i32 19088743 to void (i32*, i32, i32, i32)*)(i32* %p, i32 %x, i32 %y, i32 %z)
- ret void
-}
More information about the llvm-commits
mailing list