[LLVMdev] PassManager vs FunctionPassManager
Devang Patel
dpatel at apple.com
Thu Jun 21 16:37:14 PDT 2007
On Jun 21, 2007, at 4:13 PM, Dan Gohman wrote:
> Right now, addPassesToEmitFile requires a FunctionPassManager. If I'm
> working with code that uses a plain PassManager and want it to
> generate
> code, are there any options better than doing this:
That's what FPPassManager does (include/llvm/PassManagers.h) .
Function pass manager itself is a module level pass.
FunctionPassManager is external stand alone interface hence it does
not derive from ModulePass.
-
Devang
> /**
> * Wrapper class to run a FunctionPassManager as a ModulePass so that
> it
> * can be added to a plain PassManager.
> */
> class FunctionPassManagerModulePass : public ModulePass {
> FunctionPassManager &Passes;
> public:
> static char ID; // Pass ID, replacement for typeid
> explicit FunctionPassManagerModulePass(FunctionPassManager &FPM) :
> ModulePass((intptr_t)&ID),
> Passes(FPM)
> {}
>
> bool runOnModule(Module &M) {
> bool Changes = false;
>
> Changes |= Passes.doInitialization();
>
> for (Module::iterator I = M.begin(), E = M.end(); I != E; ++I)
> if (!I->isDeclaration())
> Changes |= Passes.run(*I);
>
> Changes |= Passes.doFinalization();
>
> return Changes;
> }
> };
>
>
> ?
>
> Thanks,
>
> Dan
>
> --
> Dan Gohman, Cray Inc.
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
More information about the llvm-dev
mailing list