[llvm] r276917 - [Hexagon] Add option to bisect spill slot optimization
Krzysztof Parzyszek via llvm-commits
llvm-commits at lists.llvm.org
Wed Jul 27 13:58:44 PDT 2016
Author: kparzysz
Date: Wed Jul 27 15:58:43 2016
New Revision: 276917
URL: http://llvm.org/viewvc/llvm-project?rev=276917&view=rev
Log:
[Hexagon] Add option to bisect spill slot optimization
Modified:
llvm/trunk/lib/Target/Hexagon/HexagonFrameLowering.cpp
Modified: llvm/trunk/lib/Target/Hexagon/HexagonFrameLowering.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/Hexagon/HexagonFrameLowering.cpp?rev=276917&r1=276916&r2=276917&view=diff
==============================================================================
--- llvm/trunk/lib/Target/Hexagon/HexagonFrameLowering.cpp (original)
+++ llvm/trunk/lib/Target/Hexagon/HexagonFrameLowering.cpp Wed Jul 27 15:58:43 2016
@@ -159,6 +159,12 @@ static cl::opt<bool> UseAllocframe("use-
static cl::opt<bool> OptimizeSpillSlots("hexagon-opt-spill", cl::Hidden,
cl::init(true), cl::desc("Optimize spill slots"));
+#ifndef NDEBUG
+static cl::opt<unsigned> SpillOptMax("spill-opt-max", cl::Hidden,
+ cl::init(UINT_MAX));
+static unsigned SpillOptCount = 0;
+#endif
+
namespace llvm {
void initializeHexagonCallFrameInformationPass(PassRegistry&);
@@ -1427,7 +1433,6 @@ bool HexagonFrameLowering::assignCalleeS
return true;
}
-
bool HexagonFrameLowering::expandCopy(MachineBasicBlock &B,
MachineBasicBlock::iterator It, MachineRegisterInfo &MRI,
const HexagonInstrInfo &HII, SmallVectorImpl<unsigned> &NewRegs) const {
@@ -2126,6 +2131,10 @@ void HexagonFrameLowering::optimizeSpill
}
});
+#ifndef NDEBUG
+ bool HasOptLimit = SpillOptMax.getPosition();
+#endif
+
// eliminate loads, when all loads eliminated, eliminate all stores.
for (auto &B : MF) {
auto F = BlockIndexes.find(&B);
@@ -2160,6 +2169,13 @@ void HexagonFrameLowering::optimizeSpill
DEBUG(dbgs() << "Replacement reg:" << PrintReg(FoundR, &HRI) << '\n');
if (FoundR == 0)
continue;
+#ifndef NDEBUG
+ if (HasOptLimit) {
+ if (SpillOptCount >= SpillOptMax)
+ return;
+ SpillOptCount++;
+ }
+#endif
// Generate the copy-in: "FoundR = COPY SrcR" at the store location.
MachineBasicBlock::iterator StartIt = SI, NextIt;
@@ -2221,7 +2237,6 @@ void HexagonFrameLowering::optimizeSpill
}
}
-
void HexagonFrameLowering::expandAlloca(MachineInstr *AI,
const HexagonInstrInfo &HII, unsigned SP, unsigned CF) const {
MachineBasicBlock &MB = *AI->getParent();
More information about the llvm-commits
mailing list