diff options
author | Matthias Braun <matze@braunis.de> | 2014-12-11 21:26:47 +0000 |
---|---|---|
committer | Matthias Braun <matze@braunis.de> | 2014-12-11 21:26:47 +0000 |
commit | 7e37a5f52347f7bc9c09471e731e3209e0583a3d (patch) | |
tree | 6008db5b6412401a9d5775ce4acf26b8e90a10db /llvm/lib/Target/PowerPC/PPCTargetMachine.cpp | |
parent | df036085f0fcedf405e36622c203045e072e57fd (diff) | |
download | llvm-7e37a5f52347f7bc9c09471e731e3209e0583a3d.zip llvm-7e37a5f52347f7bc9c09471e731e3209e0583a3d.tar.gz llvm-7e37a5f52347f7bc9c09471e731e3209e0583a3d.tar.bz2 |
[CodeGen] Add print and verify pass after each MachineFunctionPass by default
Previously print+verify passes were added in a very unsystematic way, which is
annoying when debugging as you miss intermediate steps and allows bugs to stay
unnotice when no verification is performed.
To make this change practical I added the possibility to explicitely disable
verification. I used this option on all places where no verification was
performed previously (because alot of places actually don't pass the
MachineVerifier).
In the long term these problems should be fixed properly and verification
enabled after each pass. I'll enable some more verification in subsequent
commits.
This is the 2nd attempt at this after realizing that PassManager::add() may
actually delete the pass.
llvm-svn: 224059
Diffstat (limited to 'llvm/lib/Target/PowerPC/PPCTargetMachine.cpp')
-rw-r--r-- | llvm/lib/Target/PowerPC/PPCTargetMachine.cpp | 22 |
1 files changed, 9 insertions, 13 deletions
diff --git a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp index e930a9c..b447c83 100644 --- a/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp +++ b/llvm/lib/Target/PowerPC/PPCTargetMachine.cpp @@ -162,9 +162,9 @@ public: bool addPreISel() override; bool addILPOpts() override; bool addInstSelector() override; - bool addPreRegAlloc() override; - bool addPreSched2() override; - bool addPreEmitPass() override; + void addPreRegAlloc() override; + void addPreSched2() override; + void addPreEmitPass() override; }; } // namespace @@ -216,28 +216,24 @@ bool PPCPassConfig::addInstSelector() { return false; } -bool PPCPassConfig::addPreRegAlloc() { +void PPCPassConfig::addPreRegAlloc() { initializePPCVSXFMAMutatePass(*PassRegistry::getPassRegistry()); insertPass(VSXFMAMutateEarly ? &RegisterCoalescerID : &MachineSchedulerID, &PPCVSXFMAMutateID); - return false; } -bool PPCPassConfig::addPreSched2() { - addPass(createPPCVSXCopyCleanupPass()); +void PPCPassConfig::addPreSched2() { + addPass(createPPCVSXCopyCleanupPass(), false); if (getOptLevel() != CodeGenOpt::None) addPass(&IfConverterID); - - return true; } -bool PPCPassConfig::addPreEmitPass() { +void PPCPassConfig::addPreEmitPass() { if (getOptLevel() != CodeGenOpt::None) - addPass(createPPCEarlyReturnPass()); + addPass(createPPCEarlyReturnPass(), false); // Must run branch selection immediately preceding the asm printer. - addPass(createPPCBranchSelectionPass()); - return false; + addPass(createPPCBranchSelectionPass(), false); } void PPCTargetMachine::addAnalysisPasses(PassManagerBase &PM) { |