Dear everyone, I want to traverse call graph, but I have some trouble . In my pass MyPass which need to traverse call graph, I firstly added the CallGraph analysis to the pass requirements by *AU.addRequired<CallGraph>();* My pass MyPass then will be added to a pass manager by *manager.add(new MyPass());* and then I want to traverse the call graph such as: CallGraph CG = this->getAnalysis<CallGraph>; for (CallGraph::const_iterator i = CG.begin(); i != CG.end(); ++i) { .... } However, I encountered a segmentation fault with the next core dump information. What should I do? llvm::PassInfo::createPass() const + 4 llvm::PMTopLevelManager::schedulePass(llvm::Pass*) llvm::PassManager::add(llvm::Pass*) ... -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131202/c8daa472/attachment.html>
I recall having a similar problem while coding my own special-purpose "opt". My guess: try adding the following lines before your pass is inserted into the PassManager: PassRegistry &Registry = *PassRegistry::getPassRegistry(); initializeIPA(Registry); You might require other library initializations. Have a look at the "opt" source code. On 02/12/13 10:36, lucefe wrote:> Dear everyone, > I want to traverse call graph, but I have some trouble . > In my pass MyPass which need to traverse call graph, I firstly added > the CallGraph analysis to the pass requirements by > *AU.addRequired<CallGraph>();* > My pass MyPass then will be added to a pass manager by > *manager.add(new MyPass());* > and then I want to traverse the call graph such as: > CallGraph CG = this->getAnalysis<CallGraph>; > for (CallGraph::const_iterator i = CG.begin(); i != CG.end(); ++i) { > .... > } > However, I encountered a segmentation fault with the next core dump > information. What should I do? > llvm::PassInfo::createPass() const + 4 > llvm::PMTopLevelManager::schedulePass(llvm::Pass*) > llvm::PassManager::add(llvm::Pass*) > ... > > > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev-- Pablo Barrio Dpt. Electrical Engineering - Technical University of Madrid Office C-203 Avda. Complutense s/n, 28040 Madrid Tel. (+34) 915495700 ext. 4234 @: pbarrio at die.upm.es -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131203/1fe3b0a2/attachment.html>
Yes, you are right. I have solved this problem according to your instruction. Thank you very much. 2013/12/3 Pablo Barrio <pbarrio at die.upm.es>> I recall having a similar problem while coding my own special-purpose > "opt". My guess: try adding the following lines before your pass is > inserted into the PassManager: > > PassRegistry &Registry = *PassRegistry::getPassRegistry(); > initializeIPA(Registry); > > You might require other library initializations. Have a look at the "opt" > source code. > > > On 02/12/13 10:36, lucefe wrote: > > Dear everyone, > > I want to traverse call graph, but I have some trouble . > > In my pass MyPass which need to traverse call graph, I firstly added the > CallGraph analysis to the pass requirements by > > *AU.addRequired<CallGraph>();* > > My pass MyPass then will be added to a pass manager by > > *manager.add(new MyPass());* > > and then I want to traverse the call graph such as: > > CallGraph CG = this->getAnalysis<CallGraph>; > for (CallGraph::const_iterator i = CG.begin(); i != CG.end(); ++i) { > .... > } > > However, I encountered a segmentation fault with the next core dump > information. What should I do? > > llvm::PassInfo::createPass() const + 4 > llvm::PMTopLevelManager::schedulePass(llvm::Pass*) > llvm::PassManager::add(llvm::Pass*) > ... > > > > _______________________________________________ > LLVM Developers mailing listLLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev > > > > -- > Pablo Barrio > Dpt. Electrical Engineering - Technical University of Madrid > Office C-203 > Avda. Complutense s/n, 28040 Madrid > Tel. (+34) 915495700 ext. 4234 > @: pbarrio at die.upm.es > >-------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20131204/f3aa67fb/attachment.html>
Reasonably Related Threads
- [LLVMdev] Segmentation fault when traverse call graph
- [LLVMdev] Assertion `PI && "Expected required passes to be initialized"' failed for AliasAnalysis.
- [LLVMdev] Problem building the LLVM sample project
- [LLVMdev] Possible bug in the dragonegg
- [LLVMdev] Assertion `PI && "Expected required passes to be initialized"' failed for AliasAnalysis.