Fix PR1539. Add LoopPassPrinter.

llvm-svn: 37909
This commit is contained in:
Devang Patel 2007-07-05 15:32:03 +00:00
parent eca2fa295b
commit aba2f3de85
2 changed files with 31 additions and 0 deletions

View File

@ -1,5 +1,7 @@
; RUN: llvm-as < %s | opt -analyze -inline -disable-output
; PR 1526
; RUN: llvm-as < %s | opt -analyze -indvars -disable-output
; PR 1539
define i32 @test1() {
ret i32 0;
}

View File

@ -176,6 +176,33 @@ struct FunctionPassPrinter : public FunctionPass {
};
char FunctionPassPrinter::ID = 0;
struct LoopPassPrinter : public LoopPass {
static char ID;
const PassInfo *PassToPrint;
LoopPassPrinter(const PassInfo *PI) :
LoopPass((intptr_t)&ID), PassToPrint(PI) {}
virtual bool runOnLoop(Loop *L, LPPassManager &LPM) {
if (!Quiet) {
cout << "Printing analysis '" << PassToPrint->getPassName() << "':\n";
getAnalysisID<Pass>(PassToPrint).print(cout,
L->getHeader()->getParent()->getParent());
}
// Get and print pass...
return false;
}
virtual const char *getPassName() const { return "'Pass' Printer"; }
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequiredID(PassToPrint);
AU.setPreservesAll();
}
};
char LoopPassPrinter::ID = 0;
struct BasicBlockPassPrinter : public BasicBlockPass {
const PassInfo *PassToPrint;
static char ID;
@ -372,6 +399,8 @@ int main(int argc, char **argv) {
if (AnalyzeOnly) {
if (dynamic_cast<BasicBlockPass*>(P))
Passes.add(new BasicBlockPassPrinter(PassInf));
else if (dynamic_cast<LoopPass*>(P))
Passes.add(new LoopPassPrinter(PassInf));
else if (dynamic_cast<FunctionPass*>(P))
Passes.add(new FunctionPassPrinter(PassInf));
else if (dynamic_cast<CallGraphSCCPass*>(P))