運行LLVM傳遞時出現分段錯誤。我需要在基本塊的循環「for」循環之外使用BBterminators數組。看來LLVM在遍歷循環時不保護地址(注意:TerminatorInst *BasicBlock::getTerminator()
),所以我需要將BBterminators保留在Instruction
類型的變量中,而不是Instruction *
。如何將整個Instructions
複製到BBterminators
?LLVM分段錯誤/需要使用指令而不是指令*
for (Function::iterator II = F.begin(), EE = F.end(); II != EE; ++II, ++ii)
{
BasicBlock* BB = (dyn_cast<BasicBlock>(II));
if (BB->getTerminator())
{
Instruction *current = BB->getTerminator();
Instruction *previous = current->getPrevNode();
if (current->getOpcode() == Instruction::Br)
{
BBterminators[ii] = current;
其中Instruction **BBterminators = new Instruction *[100];