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();
AU.addRequired();
AU.addRequired();
AU.addPreserved();
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:
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!