В следующем коде в LLVM
unsigned ii=0;
BasicBlock* Bb = &*i;
TerminatorInst *TI = i->getTerminator();
for( std::set<BasicBlock*>::iterator rit=Result.begin(); rit!=Result.end();++rit,++ii)
{
TI->setSuccessor(ii,(*rit));
errs() << "\n\tBasic block (name=" <<(*rit)->getName() << ")";
}
Код дает мне следующую ошибку, когда он реализован в модуле Pass
Basic block (name=if.then)opt: /home/rasha/llvm2/llvm/include/llvm/IR
/Instructions.h:2406: void llvm::BranchInst::setSuccessor(unsigned int, llvm::BasicBlock
*): Assertion `idx < getNumSuccessors() && "Successor # out of range for Branch!"' failed.
0 opt 0x00000000018895be llvm::sys::PrintStackTrace(_IO_FILE*) + 46
Есть ли критерии, которые я должен использовать, чтобы установить idx каждого базового блока в качестве преемника? Кроме того, он не выдает эту ошибку только после удаления приращения ii , но с неправильным результатом