<div style="font-family:SimSun,STSong;font-size:large;;"><div><font size="2">Hi all,</font></div><div><font size="2"><br></font></div><div><font size="2">I want to initialize a callgraph pointer on demand, so I do something like the following:</font></div><blockquote><font size="2">class CallSite {<br></font><font size="2">    CallSite(llvm::Module &M) {<br></font><font size="2">        llvmCG = new llvm::CallGraph(*m); // this line causes core dump<br></font><font size="2"><span style="white-space:pre">   </span>this->m = &M;<br></font><font size="2">   }<br></font><font size="2">    ~CallSite() {<br></font><font size="2">           ...<br></font><font size="2">    }</font><font size="2"><br></font><font size="2">public:<br></font><font size="2">    ....</font><font size="2"><br></font><font size="2">private:<br></font><font size="2">    llvm::CallGraph *llvmCG;<br></font><font size="2">   ...<br></font><font size="2">}</font></blockquote><div><font size="2"><br></font></div><div><font size="2">I use out of source to build the code, and it could compile without errors. But when throws "core dump" when running </font></div><div><font size="2">with 'opt -load callsite/libLLVMPassCS.so -callsite < hello.bc > /dev/null</font><span style="font-size: small;">'. </span></div><div><span style="font-size: small;"><br></span></div><div><span style="font-size: small;">Command Line output:</span></div><div><div style=""><blockquote formatblock="1" style="margin: 0.8em 0px 0.8em 2em; padding: 0px 0px 0px 0.7em; border-left: 2px solid rgb(221, 221, 221);"><font size="2">opt -load callsite/libLLVMPassCS.so -callsite < hello.bc > /dev/null<br></font><font size="2">#0 0x208425e llvm::sys::PrintStackTrace(_IO_FILE*) /home/zhangysh1995/packages/llvm36/lib/Support/Unix/Signals.inc:422:15<br></font><font size="2">#1 0x2084feb PrintStackTraceSignalHandler(void*) /home/zhangysh1995/packages/llvm36/lib/Support/Unix/Signals.inc:481:1<br></font><font size="2">#2 0x20852d9 SignalHandler(int) /home/zhangysh1995/packages/llvm36/lib/Support/Unix/Signals.inc:198:60<br></font><font size="2">#3 0x7f7488070390 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x11390)<br></font><font size="2">#4 0x78da73 llvm::iplist<llvm::Function, llvm::ilist_traits<llvm::Function> >::CreateLazySentinel() const /home/zhangysh1995/packages/llvm36/include/llvm/ADT/ilist.h:327:22<br></font><font size="2">#5 0x78da39 llvm::iplist<llvm::Function, llvm::ilist_traits<llvm::Function> >::begin() /home/zhangysh1995/packages/llvm36/include/llvm/ADT/ilist.h:360:5<br></font><font size="2">#6 0x78d539 llvm::Module::begin() /home/zhangysh1995/packages/llvm36/include/llvm/IR/Module.h:571:50<br></font><font size="2"><b>#7 0x1b649d9 llvm::CallGraph::CallGraph(llvm::Module&) /home/zhangysh1995/packages/llvm36/lib/Analysis/IPA/CallGraph.cpp:27:29  // this is the constructor<br></b></font><font size="2">#8 0x7f7486dc40b2 CallSite::CallSite(llvm::Module&) (callsite/libLLVMPassCS.so+0x30b2)<br></font><font size="2">#9 0x7f7486dc45d3 (anonymous namespace)::test::runOnModule(llvm::Module&) (callsite/libLLVMPassCS.so+0x35d3)<br></font><font size="2">#10 0x1fd5df5 (anonymous namespace)::MPPassManager::runOnModule(llvm::Module&) /home/zhangysh1995/packages/llvm36/lib/IR/LegacyPassManager.cpp:1616:23<br></font><font size="2">#11 0x1fd5a09 llvm::legacy::PassManagerImpl::run(llvm::Module&) /home/zhangysh1995/packages/llvm36/lib/IR/LegacyPassManager.cpp:1723:16<br></font><font size="2">#12 0x1fd6371 llvm::legacy::PassManager::run(llvm::Module&) /home/zhangysh1995/packages/llvm36/lib/IR/LegacyPassManager.cpp:1756:3<br></font><font size="2">#13 0x7cde9c main /home/zhangysh1995/packages/llvm36/tools/opt/opt.cpp:582:3<br></font><font size="2">#14 0x7f7486fe7830 __libc_start_main /build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:325:0<br></font><font size="2">#15 0x78cb99 _start (/usr/local/bin/opt+0x78cb99)<br></font><font size="2">Stack dump:<br></font><font size="2">0.<span style="white-space:pre">        </span>Program arguments: opt -load callsite/libLLVMPassCS.so -callsite <br></font><font size="2">1.<span style="white-space:pre">    </span>Running pass 'Get call information' on module '<stdin>'.<br></font><font size="2">Segmentation fault (core dumped)</font></blockquote></div></div><div><font size="2">Could anyone help me with this issue? And if I change it to instance instead of pointer, </font></div><div><font size="2"><blockquote formatblock="1" style="margin: 0.8em 0px 0.8em 2em; padding: 0px 0px 0px 0.7em; border-left: 2px solid rgb(221, 221, 221);">error: use of deleted function ‘llvm::CallGraph& llvm::CallGraph::operator=(const llvm::CallGraph&)’<br>  llvmCG = llvm::CallGraph(*m);</blockquote></font></div><div><font size="2">BTW, is there anyway to test my pass runtime behavior without running opt everytime?</font></div><div><font size="2"><br></font></div><div><font size="2"><br></font></div><div><font size="2">Thank you all,</font></div><div><font size="2">Yushan</font></div><div><tincludetail></tincludetail></div></div><!--<![endif]-->