mirror of
https://github.com/RPCS3/llvm.git
synced 2026-07-19 15:13:49 -04:00
RegAllocGreedy: Properly initialize this pass, so that -run-pass will work
Reviewers: qcolombet, MatzeB Subscribers: wdng, llvm-commits Differential Revision: https://reviews.llvm.org/D26572 git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@286895 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@@ -124,6 +124,9 @@ namespace llvm {
|
||||
// instruction and update the MachineFunctionInfo with that information.
|
||||
extern char &ShrinkWrapID;
|
||||
|
||||
/// Greedy register allocator.
|
||||
extern char &RAGreedyID;
|
||||
|
||||
/// VirtRegRewriter pass. Rewrite virtual registers to physical registers as
|
||||
/// assigned in VirtRegMap.
|
||||
extern char &VirtRegRewriterID;
|
||||
|
||||
@@ -126,6 +126,7 @@ void initializeEarlyIfConverterPass(PassRegistry&);
|
||||
void initializeEdgeBundlesPass(PassRegistry&);
|
||||
void initializeEfficiencySanitizerPass(PassRegistry&);
|
||||
void initializeEliminateAvailableExternallyLegacyPassPass(PassRegistry &);
|
||||
void initializeRAGreedyPass(PassRegistry&);
|
||||
void initializeGVNHoistLegacyPassPass(PassRegistry &);
|
||||
void initializeExpandISelPseudosPass(PassRegistry&);
|
||||
void initializeExpandPostRAPass(PassRegistry&);
|
||||
|
||||
@@ -71,6 +71,7 @@ void llvm::initializeCodeGen(PassRegistry &Registry) {
|
||||
initializePostRASchedulerPass(Registry);
|
||||
initializePreISelIntrinsicLoweringLegacyPassPass(Registry);
|
||||
initializeProcessImplicitDefsPass(Registry);
|
||||
initializeRAGreedyPass(Registry);
|
||||
initializeRegisterCoalescerPass(Registry);
|
||||
initializeRenameIndependentSubregsPass(Registry);
|
||||
initializeShrinkWrapPass(Registry);
|
||||
|
||||
@@ -423,6 +423,24 @@ private:
|
||||
} // end anonymous namespace
|
||||
|
||||
char RAGreedy::ID = 0;
|
||||
char &llvm::RAGreedyID = RAGreedy::ID;
|
||||
|
||||
INITIALIZE_PASS_BEGIN(RAGreedy, "greedy",
|
||||
"Greedy Register Allocator", false, false)
|
||||
INITIALIZE_PASS_DEPENDENCY(LiveDebugVariables)
|
||||
INITIALIZE_PASS_DEPENDENCY(SlotIndexes)
|
||||
INITIALIZE_PASS_DEPENDENCY(LiveIntervals)
|
||||
INITIALIZE_PASS_DEPENDENCY(RegisterCoalescer)
|
||||
INITIALIZE_PASS_DEPENDENCY(MachineScheduler)
|
||||
INITIALIZE_PASS_DEPENDENCY(LiveStacks)
|
||||
INITIALIZE_PASS_DEPENDENCY(MachineDominatorTree)
|
||||
INITIALIZE_PASS_DEPENDENCY(MachineLoopInfo)
|
||||
INITIALIZE_PASS_DEPENDENCY(VirtRegMap)
|
||||
INITIALIZE_PASS_DEPENDENCY(LiveRegMatrix)
|
||||
INITIALIZE_PASS_DEPENDENCY(EdgeBundles)
|
||||
INITIALIZE_PASS_DEPENDENCY(SpillPlacement)
|
||||
INITIALIZE_PASS_END(RAGreedy, "greedy",
|
||||
"Greedy Register Allocator", false, false)
|
||||
|
||||
#ifndef NDEBUG
|
||||
const char *const RAGreedy::StageName[] = {
|
||||
@@ -446,19 +464,6 @@ FunctionPass* llvm::createGreedyRegisterAllocator() {
|
||||
}
|
||||
|
||||
RAGreedy::RAGreedy(): MachineFunctionPass(ID) {
|
||||
initializeLiveDebugVariablesPass(*PassRegistry::getPassRegistry());
|
||||
initializeSlotIndexesPass(*PassRegistry::getPassRegistry());
|
||||
initializeLiveIntervalsPass(*PassRegistry::getPassRegistry());
|
||||
initializeSlotIndexesPass(*PassRegistry::getPassRegistry());
|
||||
initializeRegisterCoalescerPass(*PassRegistry::getPassRegistry());
|
||||
initializeMachineSchedulerPass(*PassRegistry::getPassRegistry());
|
||||
initializeLiveStacksPass(*PassRegistry::getPassRegistry());
|
||||
initializeMachineDominatorTreePass(*PassRegistry::getPassRegistry());
|
||||
initializeMachineLoopInfoPass(*PassRegistry::getPassRegistry());
|
||||
initializeVirtRegMapPass(*PassRegistry::getPassRegistry());
|
||||
initializeLiveRegMatrixPass(*PassRegistry::getPassRegistry());
|
||||
initializeEdgeBundlesPass(*PassRegistry::getPassRegistry());
|
||||
initializeSpillPlacementPass(*PassRegistry::getPassRegistry());
|
||||
}
|
||||
|
||||
void RAGreedy::getAnalysisUsage(AnalysisUsage &AU) const {
|
||||
|
||||
@@ -0,0 +1,11 @@
|
||||
# RUN: llc -run-pass=greedy -debug-pass=Arguments -o - %s 2>&1 | FileCheck %s
|
||||
|
||||
# Check that passes are initialized correctly, so that it's possible to
|
||||
# use -run-pass.
|
||||
|
||||
---
|
||||
# CHECK: name: foo
|
||||
name: foo
|
||||
body: |
|
||||
bb.0:
|
||||
...
|
||||
Reference in New Issue
Block a user