GCC IR如何与LLVM IR不同?

los*_*rer 9 compiler-construction gcc compilation llvm-ir

为什么人们更喜欢LLVM IR,它与GCC IR有何不同?目标依赖是一个因素吗?

我是编译器的完全新手,即使在寻找答案很长时间后也无法找到任何相关信息.任何见解都会有所帮助.

yug*_*ugr 6

它们没有那么不同 - 两者都是非常标准的CFG +三地址代码(至少如果我们谈论中端并且不触及codegen部分).但是,与GCC的Gimple相比,LLVM IR可以说更好的结构化,更好的定义,更少的绑定到编译器实现,并且具有更好的C++ API.这样可以更容易地进行处理,转换和分析,这使得它成为目前选择的IR,无论是编译器还是其他相关工具.