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 移除终结者指令的主要内容,如果未能解决你的问题,请参考以下文章

LLVM之父Chris Lattner:编译器的黄金时代

MySQL 的中文乱码问题终结

手机取证流言终结

04_(终结版)通过App实现对数据库的增删改

springcloud:配置中心和消息总线(配置中心终结版)

springcloud:配置中心和消息总线(配置中心终结版)