[LLVMdev] Function Pass Manager
Ivan Llopard
ivanllopard at gmail.com
Fri Mar 23 09:00:32 PDT 2012
Hi,
I'm writing a function pass which is dynamically loaded by opt and I
need some analysis and passes to be run before my pass:
virtual void getAnalysisUsage(AnalysisUsage &AU) const {
AU.addRequired<LoopInfo>();
AU.addPreserved<LoopInfo>();
AU.addRequiredID(LoopSimplifyID);
AU.addPreservedID(LoopSimplifyID);
AU.addRequiredID(LCSSAID);
AU.addPreservedID(LCSSAID);
AU.addRequired<ScalarEvolution>();
AU.addPreserved<ScalarEvolution>();
}
When I run it with opt -load, I'm getting the following error:
Unable to schedule 'Canonicalize natural loops' required by 'MyPass'
Unable to schedule pass
After looking at the pass manager framework, it seems that passes with
lower level than FunctionPass (such as LoopPass in my particular case)
cannot be scheduled on-the-fly or must be handled by specific function
managers. This is not the case for module passes, i.e. module passes
requiring function ones. Is it correct ?
In other words, why is addLowerLevelRequiredPass() not specialized for
function managers ?
I think I'm misunderstanding the whole thing, is it possible to chain
transformation passes from my pass or do I chain them explicitly from
the command line ?
Thanks in advance,
Ivan
More information about the llvm-dev
mailing list