[LLVMdev] Segmentation fault on using get parent of a PHINode
Surinder
surifilms at gmail.com
Mon Jan 31 00:29:14 PST 2011
I am getting a segmentation fault as soon as I touch the Basic block
*b value defined as :
std::string getPHIAssigns(const PHINode *PH)
{ const BasicBlock *b = PH->getParent();
errs() << b->size();
where as getPHIAssigns is being called from
for (BasicBlock::iterator ins=b->begin(), e3=b->end();
ins!=e3; ++ins, ++l) // get instructions
{ if (const PHINode *PH = dyn_cast<PHINode>(&ins)) // Phi
ers() << getPHIAssigns(PH);
Can you see what is wrong here?
The dump is :
0 opt 0x0000000000bc9cfa
1 opt 0x0000000000bca288
2 libpthread.so.0 0x00000037ef20e540
3 opt 0x0000000000910849 llvm::iplist<llvm::Instruction,
llvm::ilist_traits<llvm::Instruction> >::size() const + 17
4 opt 0x00000000009108a5 llvm::BasicBlock::size() const + 25
5 dfl.so 0x00002aaaaaaf101d
6 dfl.so 0x00002aaaaaaf2965
7 dfl.so 0x00002aaaaaaf308a
8 opt 0x0000000000b467fa
llvm::FPPassManager::runOnFunction(llvm::Function&) + 348
9 opt 0x0000000000b469cf
llvm::FPPassManager::runOnModule(llvm::Module&) + 81
10 opt 0x0000000000b464bd
llvm::MPPassManager::runOnModule(llvm::Module&) + 381
11 opt 0x0000000000b478f7
llvm::PassManagerImpl::run(llvm::Module&) + 111
12 opt 0x0000000000b47959 llvm::PassManager::run(llvm::Module&) + 33
13 opt 0x00000000007a14a6 main + 3438
14 libc.so.6 0x00000037ee61e074 __libc_start_main + 244
15 opt 0x00000000007929a9
Stack dump:
0. Program arguments: opt -load
/u1/suri/llvm-local/build/x86-64/Debug/llvm/Debug/lib/dfl.so -dfl
/u1/suri/suri/testing/cfgs/test99foo.c.bc
1. Running pass 'Function Pass Manager' on module
'/u1/suri/suri/testing/cfgs/test99foo.c.bc'.
2. Running pass 'emit cfg in dfl format' on function '@main'
Surinder
>
More information about the llvm-dev
mailing list