【发布时间】:2013-08-20 13:56:19
【问题描述】:
我想删除 UnreachableInst,因为之前的转换已使其可访问。但是,调用 eraseFromParent() 会给我一个格式错误的 BasicBlock,因为 UnreachableInst 是其 BasicBlock 的终止符。如何修复 BasicBlock 以在 UnreachableInst 之前的指令处终止?
【问题讨论】:
标签: llvm terminator unreachable-statement
我想删除 UnreachableInst,因为之前的转换已使其可访问。但是,调用 eraseFromParent() 会给我一个格式错误的 BasicBlock,因为 UnreachableInst 是其 BasicBlock 的终止符。如何修复 BasicBlock 以在 UnreachableInst 之前的指令处终止?
【问题讨论】:
标签: llvm terminator unreachable-statement
每个基本块都必须以终止符结尾。我认为删除无法访问的指令最直接的方法是替换另一个终止符 - 例如,分支到下一个基本块,返回指令等。
查看 BasicBlockUtils.h 中的 llvm::ReplaceInstWithInst 以方便地用另一条指令替换一条指令。
【讨论】: