[LLVMdev] A question about the pass manager infrastructure

Qingan Li ww345ww at gmail.com
Thu Nov 20 00:21:11 PST 2014


Hi,

I am writing a pass A inheriting the CallGraphSCCPass.

*And the getAnalysisUsage () is as below:*
*   virtual void getAnalysisUsage(AnalysisUsage &AU) const {*
*      AU.setPreservesCFG();    *
*   CallGraphSCCPass::getAnalysisUsage(AU);*
*     AU.addRequired<AliasAnalysis>();*

*      AU.addRequired<LiveStacks>();*
*      AU.addRequired<MachineBlockFrequencyInfo>();*
*      AU.addPreserved<MachineBlockFrequencyInfo>();*
*      AU.addPreservedID(MachineDominatorsID);*

*    }*

However, this pass can not be scheduled by the current pass manager
infrastructure (I am using llvm 3.4), the output is as follows:

[image: 内嵌图片 1]
After single-step debugging, I found that it is caused by the
PMDataManager::addLowerLevelRequiredPass function.
This virtual function is only implemented by MPPassManager right now.
However, for pass A, since a CallGraphSCCPass requires passes at a lower
level, like LiveStacksPass, it triggers the
PMDataManager::addLowerLevelRequiredPass function, which should be
"unreachable".

Could some one help me with it?

Thanks in advance!


Best regards,

Li Qingan
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141120/284d3e6e/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: image.png
Type: image/png
Size: 23049 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20141120/284d3e6e/attachment.png>


More information about the llvm-dev mailing list