为什么人们更喜欢LLVM IR,它与GCC IR有何不同?目标依赖是一个因素吗?
我是编译器的新手,即使在寻找答案很长时间后也无法找到任何相关信息。任何见解都会有所帮助。
答案 0 :(得分:5)
它们不是 不同 - 两者都是非常标准的CFG +三地址代码(至少如果我们谈论中端并且不触及codegen部分)。但是,与GCC的Gimple相比,LLVM IR可以说更好的结构化,更好的定义,更少的绑定到编译器实现,并且具有更好的C ++ API。这样可以更容易地进行处理,转换和分析,这使得它成为目前选择的IR,无论是编译器还是其他相关工具。