【发布时间】:2016-10-28 21:06:48
【问题描述】:
我想在运行时检查某些指令的值。因此,我创建了一个比较指令和一个分支指令,它们分支到“then”基本块或“else”基本块。但是,我不确定如何在条件分支之后插入创建的基本块,以及现有基本块的拆分如何工作。
Instruction* someInst;
IRBuilder<> B(someInst);
Value* condition = B.CreateICmp(CmpInst::ICMP_UGT, someInst, someValue);
BasicBlock* thenBB = BasicBlock::Create(*ctx, "then");
BasicBlock* elseBB = BasicBlock::Create(*ctx, "else");
B.CreateCondBr(condition, thenBB, elseBB);
B.SetInsertPoint(thenBB);
//insert stuff
B.SetInsertPoint(elseBB);
//insert stuff
如何在现有基本块的中间插入 if/else?
【问题讨论】:
标签: llvm llvm-ir llvm-c++-api