mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 15:13:49 -04:00
Add MachineFunctionProperty checks for AllVRegsAllocated for target passes
Summary: This adds the same checks that were added in r264593 to all target-specific passes that run after register allocation. Reviewers: qcolombet Subscribers: jyknight, dsanders, llvm-commits Differential Revision: http://reviews.llvm.org/D18525 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@265313 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -168,6 +168,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "Execution dependency fix";
|
||||
}
|
||||
|
||||
@@ -189,6 +189,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
bool ReverseBranchCondition(BBInfo &BBI);
|
||||
bool ValidSimple(BBInfo &TrueBBI, unsigned &Dups,
|
||||
|
||||
@@ -87,6 +87,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "Workaround A53 erratum 835769 pass";
|
||||
}
|
||||
|
||||
@@ -125,6 +125,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "A57 FP Anti-dependency breaker";
|
||||
}
|
||||
|
||||
@@ -179,6 +179,11 @@ struct AArch64CollectLOH : public MachineFunctionPass {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return AARCH64_COLLECT_LOH_NAME;
|
||||
}
|
||||
|
||||
@@ -48,6 +48,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override { return AARCH64_DEAD_REG_DEF_NAME; }
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
|
||||
@@ -164,6 +164,11 @@ struct AArch64LoadStoreOpt : public MachineFunctionPass {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return AARCH64_LOAD_STORE_OPT_NAME;
|
||||
}
|
||||
|
||||
@@ -53,6 +53,10 @@ public:
|
||||
AArch64RedundantCopyElimination() : MachineFunctionPass(ID) {}
|
||||
bool optimizeCopy(MachineBasicBlock *MBB);
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
const char *getPassName() const override {
|
||||
return "AArch64 Redundant Copy Elimination";
|
||||
}
|
||||
|
||||
@@ -279,6 +279,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "ARM constant island placement and branch shortening pass";
|
||||
}
|
||||
|
||||
@@ -50,6 +50,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "ARM pseudo instruction expansion pass";
|
||||
}
|
||||
|
||||
@@ -99,6 +99,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return ARM_LOAD_STORE_OPT_NAME;
|
||||
}
|
||||
@@ -2369,4 +2374,3 @@ FunctionPass *llvm::createARMLoadStoreOptimizationPass(bool PreAlloc) {
|
||||
return new ARMPreAllocLoadStoreOpt();
|
||||
return new ARMLoadStoreOpt();
|
||||
}
|
||||
|
||||
|
||||
@@ -27,6 +27,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "optimise barriers pass";
|
||||
}
|
||||
|
||||
@@ -36,6 +36,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "Thumb IT blocks insertion pass";
|
||||
}
|
||||
|
||||
@@ -143,6 +143,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "Thumb2 instruction size reduction pass";
|
||||
}
|
||||
|
||||
@@ -50,6 +50,10 @@ private:
|
||||
return "Hexagon CFG Optimizer";
|
||||
}
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -86,6 +86,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
MachineInstr *findPairable(MachineInstr *I1, bool &DoInsertAtI1,
|
||||
bool AllowC64);
|
||||
|
||||
@@ -45,6 +45,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "Hexagon Hardware Loop Fixup";
|
||||
}
|
||||
|
||||
@@ -170,6 +170,10 @@ namespace {
|
||||
initializeHexagonCallFrameInformationPass(PR);
|
||||
}
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
};
|
||||
|
||||
char HexagonCallFrameInformation::ID = 0;
|
||||
|
||||
@@ -49,6 +49,10 @@ namespace {
|
||||
MachineFunctionPass::getAnalysisUsage(AU);
|
||||
}
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
const HexagonInstrInfo *HII;
|
||||
@@ -316,4 +320,3 @@ bool HexagonGenMux::runOnMachineFunction(MachineFunction &MF) {
|
||||
FunctionPass *llvm::createHexagonGenMux() {
|
||||
return new HexagonGenMux();
|
||||
}
|
||||
|
||||
|
||||
@@ -87,6 +87,10 @@ namespace {
|
||||
}
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
/// \brief A handle to the branch probability pass.
|
||||
|
||||
@@ -55,6 +55,11 @@ namespace {
|
||||
}
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
static char ID;
|
||||
|
||||
private:
|
||||
|
||||
@@ -61,6 +61,10 @@ class HexagonSplitConst32AndConst64 : public MachineFunctionPass {
|
||||
return "Hexagon Split Const32s and Const64s";
|
||||
}
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
|
||||
@@ -81,6 +81,10 @@ namespace {
|
||||
return "Hexagon Packetizer";
|
||||
}
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
const HexagonInstrInfo *HII;
|
||||
@@ -1597,4 +1601,3 @@ bool HexagonPacketizerList::producesStall(const MachineInstr *I) {
|
||||
FunctionPass *llvm::createHexagonPacketizer() {
|
||||
return new HexagonPacketizer();
|
||||
}
|
||||
|
||||
|
||||
@@ -58,6 +58,11 @@ struct Filler : public MachineFunctionPass {
|
||||
return Changed;
|
||||
}
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
void insertDefsUses(MachineBasicBlock::instr_iterator MI,
|
||||
SmallSet<unsigned, 32> &RegDefs,
|
||||
SmallSet<unsigned, 32> &RegUses);
|
||||
|
||||
@@ -67,6 +67,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
MbbIterator findClosestSuitableAluInstr(MachineBasicBlock *BB,
|
||||
const MbbIterator &MemInstr,
|
||||
|
||||
@@ -50,6 +50,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
bool CombineSetflagAluInBasicBlock(MachineFunction *MF,
|
||||
MachineBasicBlock *BB);
|
||||
|
||||
@@ -39,6 +39,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "MSP430 Branch Selector";
|
||||
}
|
||||
|
||||
@@ -375,6 +375,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
void doInitialPlacement(std::vector<MachineInstr*> &CPEMIs);
|
||||
CPEntry *findConstPoolEntry(unsigned CPI, const MachineInstr *CPEMI);
|
||||
unsigned getCPELogAlign(const MachineInstr *CPEMI);
|
||||
@@ -1710,4 +1715,3 @@ void MipsConstantIslands::prescanForConstants() {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -189,6 +189,11 @@ namespace {
|
||||
return Changed;
|
||||
}
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.addRequired<MachineBranchProbabilityInfo>();
|
||||
MachineFunctionPass::getAnalysisUsage(AU);
|
||||
|
||||
@@ -75,6 +75,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
static char ID;
|
||||
};
|
||||
|
||||
@@ -73,6 +73,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
void splitMBB(MachineBasicBlock *MBB);
|
||||
void initMBBInfo();
|
||||
|
||||
@@ -46,6 +46,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "PowerPC Branch Selector";
|
||||
}
|
||||
@@ -234,4 +239,3 @@ bool PPCBSel::runOnMachineFunction(MachineFunction &Fn) {
|
||||
BlockSizes.clear();
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -192,6 +192,11 @@ public:
|
||||
return Changed;
|
||||
}
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
MachineFunctionPass::getAnalysisUsage(AU);
|
||||
}
|
||||
@@ -204,4 +209,3 @@ INITIALIZE_PASS(PPCEarlyReturn, DEBUG_TYPE,
|
||||
char PPCEarlyReturn::ID = 0;
|
||||
FunctionPass*
|
||||
llvm::createPPCEarlyReturnPass() { return new PPCEarlyReturn(); }
|
||||
|
||||
|
||||
@@ -66,6 +66,11 @@ namespace {
|
||||
return Changed;
|
||||
}
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
void insertCallDefsUses(MachineBasicBlock::iterator MI,
|
||||
SmallSet<unsigned, 32>& RegDefs,
|
||||
SmallSet<unsigned, 32>& RegUses);
|
||||
|
||||
@@ -65,6 +65,10 @@ public:
|
||||
|
||||
bool processBlock(MachineBasicBlock &MBB);
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
Reference getRegReferences(MachineInstr *MI, unsigned Reg);
|
||||
|
||||
@@ -139,6 +139,10 @@ public:
|
||||
}
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
void skipNonTerminators(BlockPosition &Position, MBBInfo &Block);
|
||||
|
||||
@@ -35,6 +35,10 @@ public:
|
||||
|
||||
bool processBlock(MachineBasicBlock &MBB);
|
||||
bool runOnMachineFunction(MachineFunction &F) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
bool shortenIIF(MachineInstr &MI, unsigned LLIxL, unsigned LLIxH);
|
||||
|
||||
@@ -48,6 +48,11 @@ public:
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "X86 pseudo instruction expansion pass";
|
||||
}
|
||||
|
||||
@@ -112,6 +112,11 @@ public:
|
||||
/// where performance or code size can be improved.
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
MachineFunction *MF;
|
||||
|
||||
|
||||
@@ -92,6 +92,12 @@ public:
|
||||
/// if needed and when possible.
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
// This pass runs after regalloc and doesn't support VReg operands.
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
private:
|
||||
MachineFunction *MF;
|
||||
const X86InstrInfo *TII; // Machine instruction info.
|
||||
|
||||
@@ -76,6 +76,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override { return "X86 FP Stackifier"; }
|
||||
|
||||
private:
|
||||
|
||||
@@ -55,6 +55,11 @@ namespace {
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "X86 Atom pad short functions";
|
||||
}
|
||||
|
||||
@@ -38,6 +38,10 @@ namespace {
|
||||
|
||||
VZeroUpperInserter() : MachineFunctionPass(ID) {}
|
||||
bool runOnMachineFunction(MachineFunction &MF) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
const char *getPassName() const override {return "X86 vzeroupper inserter";}
|
||||
|
||||
private:
|
||||
|
||||
@@ -28,6 +28,10 @@ namespace {
|
||||
XCoreFTAOElim() : MachineFunctionPass(ID) {}
|
||||
|
||||
bool runOnMachineFunction(MachineFunction &Fn) override;
|
||||
MachineFunctionProperties getRequiredProperties() const override {
|
||||
return MachineFunctionProperties().set(
|
||||
MachineFunctionProperties::Property::AllVRegsAllocated);
|
||||
}
|
||||
|
||||
const char *getPassName() const override {
|
||||
return "XCore FRAME_TO_ARGS_OFFSET Elimination";
|
||||
|
||||
@@ -81,6 +81,7 @@ name: f
|
||||
alignment: 1
|
||||
exposesReturnsTwice: false
|
||||
hasInlineAsm: false
|
||||
allVRegsAllocated: true
|
||||
isSSA: false
|
||||
tracksRegLiveness: true
|
||||
tracksSubRegLiveness: false
|
||||
|
||||
Reference in New Issue
Block a user