#include "llvm/LLVMContext.h"
#include "llvm/Module.h"
-#include "llvm/ModuleProvider.h"
#include "llvm/PassManager.h"
#include "llvm/CallGraphSCCPass.h"
#include "llvm/Bitcode/ReaderWriter.h"
FunctionPassManager *FPasses = NULL;
if (OptLevelO1 || OptLevelO2 || OptLevelO3) {
- FPasses = new FunctionPassManager(new ExistingModuleProvider(M.get()));
+ FPasses = new FunctionPassManager(M.get());
if (TD)
FPasses->add(new TargetData(*TD));
}
addPass(Passes, P);
if (AnalyzeOnly) {
- if (dynamic_cast<BasicBlockPass*>(P))
+ switch (P->getPassKind()) {
+ case PT_BasicBlock:
Passes.add(new BasicBlockPassPrinter(PassInf));
- else if (dynamic_cast<LoopPass*>(P))
+ break;
+ case PT_Loop:
Passes.add(new LoopPassPrinter(PassInf));
- else if (dynamic_cast<FunctionPass*>(P))
+ break;
+ case PT_Function:
Passes.add(new FunctionPassPrinter(PassInf));
- else if (dynamic_cast<CallGraphSCCPass*>(P))
+ break;
+ case PT_CallGraphSCC:
Passes.add(new CallGraphSCCPassPrinter(PassInf));
- else
+ break;
+ default:
Passes.add(new ModulePassPrinter(PassInf));
+ break;
+ }
}
}