Используя Instruction::moveBefore(Instruction *movPos) в LLVM IR
Как переместить Instruction
в BasicBlock(пусть BB1) в другой BasicBlock(пусть BB2), когда BB1 и BB2 находятся в одной и той же функции? Я писал проход LLVM для выполнения этой части кода:
if(cur_fun->getName() == "main"){
int i = 1;
Instruction &I_nx_bl = (cur_fun->front()).getSingleSuccessor()->front();
for(Instruction &I : cur_fun->front()){
if(i == 2){
I.moveAfter(&I_nx_bl);
}
i++;
}
}
каждый раз, используя эту функцию, я получал ошибку:
bool IsReverse = false; bool IsConst = false;llvm::ilist_iterator<OptionsT, IsReverse, IsConst>::reference = llvm::Instruction&]: Assertion `!NodePtr->isKnownSentinel()' failed.