我想删除一个UnreachableInst,因为以前的转换使它可以访问。但是,调用eraseFromParent()会给我一个格式错误的BasicBlock,因为UnreachableInst是其BasicBlock的终止符。如何修复BasicBlock,使其在UnreachableInst之前的指令处终止?
每个基本块都必须以终止符结束。我认为,删除不可访问指令的最简单方法是用另一个终止符替换,例如,分支到下一个基本块、返回指令等。
看看BasicBlockUtils.h中的llvm::ReplaceInstWithInst
,可以找到用另一条指令替换一条指令的方便方法。