Qingan Li
2014-Nov-20 08:21 UTC
[LLVMdev] A question about the pass manager infrastructure
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>