[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