Llvm 移除终结者指令
Posted
技术标签:
【中文标题】Llvm 移除终结者指令【英文标题】:Llvm Remove Terminator Instruction 【发布时间】:2013-08-20 13:56:19 【问题描述】:我想删除 UnreachableInst,因为之前的转换已使其可访问。但是,调用 eraseFromParent() 会给我一个格式错误的 BasicBlock,因为 UnreachableInst 是其 BasicBlock 的终止符。如何修复 BasicBlock 以在 UnreachableInst 之前的指令处终止?
【问题讨论】:
【参考方案1】:每个基本块都必须以终止符结尾。我认为删除无法访问的指令最直接的方法是替换另一个终止符 - 例如,分支到下一个基本块,返回指令等。
查看 BasicBlockUtils.h 中的 llvm::ReplaceInstWithInst
以方便地用另一条指令替换一条指令。
【讨论】:
以上是关于Llvm 移除终结者指令的主要内容,如果未能解决你的问题,请参考以下文章