diff options
Diffstat (limited to 'llvm/tools')
| -rw-r--r-- | llvm/tools/bugpoint-passes/TestPasses.cpp | 54 | ||||
| -rw-r--r-- | llvm/tools/opt/PassPrinters.cpp | 38 | ||||
| -rw-r--r-- | llvm/tools/opt/PassPrinters.h | 4 | ||||
| -rw-r--r-- | llvm/tools/opt/opt.cpp | 5 |
4 files changed, 30 insertions, 71 deletions
diff --git a/llvm/tools/bugpoint-passes/TestPasses.cpp b/llvm/tools/bugpoint-passes/TestPasses.cpp index d11a605fa88..6667cbe9255 100644 --- a/llvm/tools/bugpoint-passes/TestPasses.cpp +++ b/llvm/tools/bugpoint-passes/TestPasses.cpp @@ -25,25 +25,27 @@ using namespace llvm::PatternMatch; using namespace llvm; namespace { - /// CrashOnCalls - This pass is used to test bugpoint. It intentionally - /// crashes on any call instructions. - class CrashOnCalls : public BasicBlockPass { - public: - static char ID; // Pass ID, replacement for typeid - CrashOnCalls() : BasicBlockPass(ID) {} - private: - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.setPreservesAll(); - } +/// CrashOnCalls - This pass is used to test bugpoint. It intentionally +/// crashes on any call instructions. +class CrashOnCalls : public FunctionPass { +public: + static char ID; // Pass ID, replacement for typeid + CrashOnCalls() : FunctionPass(ID) {} - bool runOnBasicBlock(BasicBlock &BB) override { +private: + void getAnalysisUsage(AnalysisUsage &AU) const override { + AU.setPreservesAll(); + } + + bool runOnFunction(Function &F) override { + for (auto &BB : F) for (BasicBlock::iterator I = BB.begin(), E = BB.end(); I != E; ++I) if (isa<CallInst>(*I)) abort(); - return false; - } - }; + return false; + } +}; } char CrashOnCalls::ID = 0; @@ -52,14 +54,16 @@ static RegisterPass<CrashOnCalls> "BugPoint Test Pass - Intentionally crash on CallInsts"); namespace { - /// DeleteCalls - This pass is used to test bugpoint. It intentionally - /// deletes some call instructions, "misoptimizing" the program. - class DeleteCalls : public BasicBlockPass { - public: - static char ID; // Pass ID, replacement for typeid - DeleteCalls() : BasicBlockPass(ID) {} - private: - bool runOnBasicBlock(BasicBlock &BB) override { +/// DeleteCalls - This pass is used to test bugpoint. It intentionally +/// deletes some call instructions, "misoptimizing" the program. +class DeleteCalls : public FunctionPass { +public: + static char ID; // Pass ID, replacement for typeid + DeleteCalls() : FunctionPass(ID) {} + +private: + bool runOnFunction(Function &F) override { + for (auto &BB : F) for (BasicBlock::iterator I = BB.begin(), E = BB.end(); I != E; ++I) if (CallInst *CI = dyn_cast<CallInst>(I)) { if (!CI->use_empty()) @@ -67,9 +71,9 @@ namespace { CI->getParent()->getInstList().erase(CI); break; } - return false; - } - }; + return false; + } +}; } char DeleteCalls::ID = 0; diff --git a/llvm/tools/opt/PassPrinters.cpp b/llvm/tools/opt/PassPrinters.cpp index 70da6a43f8d..a877d9dc90f 100644 --- a/llvm/tools/opt/PassPrinters.cpp +++ b/llvm/tools/opt/PassPrinters.cpp @@ -198,40 +198,6 @@ struct RegionPassPrinter : public RegionPass { char RegionPassPrinter::ID = 0; -struct BasicBlockPassPrinter : public BasicBlockPass { - const PassInfo *PassToPrint; - raw_ostream &Out; - static char ID; - std::string PassName; - bool QuietPass; - - BasicBlockPassPrinter(const PassInfo *PI, raw_ostream &out, bool Quiet) - : BasicBlockPass(ID), PassToPrint(PI), Out(out), QuietPass(Quiet) { - std::string PassToPrintName = PassToPrint->getPassName(); - PassName = "BasicBlockPass Printer: " + PassToPrintName; - } - - bool runOnBasicBlock(BasicBlock &BB) override { - if (!QuietPass) - Out << "Printing Analysis info for BasicBlock '" << BB.getName() - << "': Pass " << PassToPrint->getPassName() << ":\n"; - - // Get and print pass... - getAnalysisID<Pass>(PassToPrint->getTypeInfo()) - .print(Out, BB.getParent()->getParent()); - return false; - } - - StringRef getPassName() const override { return PassName; } - - void getAnalysisUsage(AnalysisUsage &AU) const override { - AU.addRequiredID(PassToPrint->getTypeInfo()); - AU.setPreservesAll(); - } -}; - -char BasicBlockPassPrinter::ID = 0; - } // end anonymous namespace FunctionPass *llvm::createFunctionPassPrinter(const PassInfo *PI, @@ -260,7 +226,3 @@ RegionPass *llvm::createRegionPassPrinter(const PassInfo *PI, raw_ostream &OS, return new RegionPassPrinter(PI, OS, Quiet); } -BasicBlockPass *llvm::createBasicBlockPassPrinter(const PassInfo *PI, - raw_ostream &OS, bool Quiet) { - return new BasicBlockPassPrinter(PI, OS, Quiet); -} diff --git a/llvm/tools/opt/PassPrinters.h b/llvm/tools/opt/PassPrinters.h index d4e7a4a97f3..692befbdae7 100644 --- a/llvm/tools/opt/PassPrinters.h +++ b/llvm/tools/opt/PassPrinters.h @@ -18,7 +18,6 @@ namespace llvm { -class BasicBlockPass; class CallGraphSCCPass; class FunctionPass; class ModulePass; @@ -43,9 +42,6 @@ LoopPass *createLoopPassPrinter(const PassInfo *PI, raw_ostream &out, RegionPass *createRegionPassPrinter(const PassInfo *PI, raw_ostream &out, bool Quiet); -BasicBlockPass *createBasicBlockPassPrinter(const PassInfo *PI, - raw_ostream &out, bool Quiet); - } // end namespace llvm #endif // LLVM_TOOLS_OPT_PASSPRINTERS_H diff --git a/llvm/tools/opt/opt.cpp b/llvm/tools/opt/opt.cpp index 15495a511d0..433f5f22d8d 100644 --- a/llvm/tools/opt/opt.cpp +++ b/llvm/tools/opt/opt.cpp @@ -328,7 +328,7 @@ public: PassKind Kind = P->getPassKind(); StringRef Name = P->getPassName(); - // TODO: Implement Debugify for BasicBlockPass, LoopPass. + // TODO: Implement Debugify for LoopPass. switch (Kind) { case PT_Function: super::add(createDebugifyFunctionPass()); @@ -790,9 +790,6 @@ int main(int argc, char **argv) { if (AnalyzeOnly) { switch (Kind) { - case PT_BasicBlock: - Passes.add(createBasicBlockPassPrinter(PassInf, Out->os(), Quiet)); - break; case PT_Region: Passes.add(createRegionPassPrinter(PassInf, Out->os(), Quiet)); break; |

