[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