mirror of
https://github.com/RPCSX/llvm.git
synced 2025-02-03 02:53:06 +00:00
LiveIntervalAnalysis: Remove LiveVariables requirement
This requirement was a huge hack to keep LiveVariables alive because it was optionally used by TwoAddressInstructionPass and PHIElimination. However we have AnalysisUsage::addUsedIfAvailable() which we can use in those passes. This re-applies r260806 with LiveVariables manually added to PowerPC to hopefully not break the stage 2 bots this time. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@267954 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
36575f0cb1
commit
66bbcee0a9
@ -9,8 +9,7 @@
|
||||
//
|
||||
// This file implements the LiveInterval analysis pass which is used
|
||||
// by the Linear Scan Register allocator. This pass linearizes the
|
||||
// basic blocks of the function in DFS order and uses the
|
||||
// LiveVariables pass to conservatively compute live intervals for
|
||||
// basic blocks of the function in DFS order and computes live intervals for
|
||||
// each virtual and physical register.
|
||||
//
|
||||
//===----------------------------------------------------------------------===//
|
||||
@ -46,7 +45,6 @@ char &llvm::LiveIntervalsID = LiveIntervals::ID;
|
||||
INITIALIZE_PASS_BEGIN(LiveIntervals, "liveintervals",
|
||||
"Live Interval Analysis", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(AAResultsWrapperPass)
|
||||
INITIALIZE_PASS_DEPENDENCY(LiveVariables)
|
||||
INITIALIZE_PASS_DEPENDENCY(MachineDominatorTree)
|
||||
INITIALIZE_PASS_DEPENDENCY(SlotIndexes)
|
||||
INITIALIZE_PASS_END(LiveIntervals, "liveintervals",
|
||||
@ -75,10 +73,6 @@ void LiveIntervals::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.setPreservesCFG();
|
||||
AU.addRequired<AAResultsWrapperPass>();
|
||||
AU.addPreserved<AAResultsWrapperPass>();
|
||||
// LiveVariables isn't really required by this analysis, it is only required
|
||||
// here to make sure it is live during TwoAddressInstructionPass and
|
||||
// PHIElimination. This is temporary.
|
||||
AU.addRequired<LiveVariables>();
|
||||
AU.addPreserved<LiveVariables>();
|
||||
AU.addPreservedID(MachineLoopInfoID);
|
||||
AU.addRequiredTransitiveID(MachineDominatorsID);
|
||||
|
@ -120,6 +120,7 @@ INITIALIZE_PASS_END(PHIElimination, "phi-node-elimination",
|
||||
"Eliminate PHI nodes for register allocation", false, false)
|
||||
|
||||
void PHIElimination::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
AU.addUsedIfAvailable<LiveVariables>();
|
||||
AU.addPreserved<LiveVariables>();
|
||||
AU.addPreserved<SlotIndexes>();
|
||||
AU.addPreserved<LiveIntervals>();
|
||||
|
@ -156,6 +156,7 @@ public:
|
||||
void getAnalysisUsage(AnalysisUsage &AU) const override {
|
||||
AU.setPreservesCFG();
|
||||
AU.addRequired<AAResultsWrapperPass>();
|
||||
AU.addUsedIfAvailable<LiveVariables>();
|
||||
AU.addPreserved<LiveVariables>();
|
||||
AU.addPreserved<SlotIndexes>();
|
||||
AU.addPreserved<LiveIntervals>();
|
||||
|
@ -15,6 +15,7 @@
|
||||
#include "PPC.h"
|
||||
#include "PPCTargetObjectFile.h"
|
||||
#include "PPCTargetTransformInfo.h"
|
||||
#include "llvm/CodeGen/LiveVariables.h"
|
||||
#include "llvm/CodeGen/Passes.h"
|
||||
#include "llvm/IR/Function.h"
|
||||
#include "llvm/IR/LegacyPassManager.h"
|
||||
@ -387,8 +388,14 @@ void PPCPassConfig::addPreRegAlloc() {
|
||||
insertPass(VSXFMAMutateEarly ? &RegisterCoalescerID : &MachineSchedulerID,
|
||||
&PPCVSXFMAMutateID);
|
||||
}
|
||||
if (getPPCTargetMachine().getRelocationModel() == Reloc::PIC_)
|
||||
if (getPPCTargetMachine().getRelocationModel() == Reloc::PIC_) {
|
||||
// FIXME: LiveVariables should not be necessary here!
|
||||
// PPCTLSDYnamicCallPass uses LiveIntervals which previously dependet on
|
||||
// LiveVariables. This (unnecessary) dependency has been removed now,
|
||||
// however a stage-2 clang build fails without LiveVariables computed here.
|
||||
addPass(&LiveVariablesID, false);
|
||||
addPass(createPPCTLSDynamicCallPass());
|
||||
}
|
||||
if (EnableExtraTOCRegDeps)
|
||||
addPass(createPPCTOCRegDepsPass());
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user