Xiaolong Tang
2010-Jun-09 14:27 UTC
[LLVMdev] Segmentation fault 'cause of accessing function arguments
Hi all, I am experimenting to run a pass inherited from CallGraphSCCPass. In the pass, I iterate all functions in a SCC. In each iteration, I access all arguments of a function in the following way: Function::arg_iterator PI = fun->arg_begin(), PE = fun->arg_end(); ... I have no trouble with building. However, I am troubled with "segmentation fault" when I run the pass via: opt -load ../../build-llvm/Debug/lib/LLVMRCI.dylib -rci < a.out.bc The error message is attached later. So, am I wrong with accessing function arguments? What are the possible causes? Thanks, Xiaolong PS: ERROR MESSAGE Identify an SCC. The number of function: 1 0 opt 0x0000000100426a32 PrintStackTrace(void*) + 38 1 opt 0x0000000100426e8c SignalHandler(int) + 254 2 libSystem.B.dylib 0x00007fff82a9880a _sigtramp + 26 3 LLVMRCI.dylib 0x000000010148e6ae (anonymous namespace)::RCI::ID + 16462 4 opt 0x0000000100010e89 llvm::Function::hasLazyArguments() const + 21 5 opt 0x00000001000114e3 llvm::Function::CheckLazyArguments() const + 21 6 opt 0x000000010013a421 llvm::Function::arg_begin() + 21 7 LLVMRCI.dylib 0x0000000101483e02 (anonymous namespace)::RCI::runOnSCC(llvm::CallGraphSCC&) + 184 8 opt 0x0000000100205686 (anonymous namespace)::CGPassManager::RunPassOnSCC(llvm::Pass*, llvm::CallGraphSCC&, llvm::CallGraph&, bool&, bool&) + 230 9 opt 0x0000000100205abe (anonymous namespace)::CGPassManager::RunAllPassesOnSCC(llvm::CallGraphSCC&, llvm::CallGraph&, bool&) + 488 10 opt 0x0000000100205d60 (anonymous namespace)::CGPassManager::runOnModule(llvm::Module&) + 352 11 opt 0x00000001003bc064 llvm::MPPassManager::runOnModule(llvm::Module&) + 384 12 opt 0x00000001003bd80d llvm::PassManagerImpl::run(llvm::Module&) + 111 13 opt 0x00000001003bd86f llvm::PassManager::run(llvm::Module&) + 33 14 opt 0x0000000100066d3b main + 3420 15 opt 0x000000010005c1c4 start + 52 16 opt 0x0000000000000004 start + 4294590068 Stack dump: 0. Program arguments: opt -load ../../build-llvm/Debug/lib/LLVMRCI.dylib -rci 1. Running pass 'CallGraph Pass Manager' on module '<stdin>'. Segmentation fault