我知道Clang和GCC或多或少是兼容的C / C++编译器,只要它负责诸如体系结构标志,预定义和链接正确的库之类的事情。实际上,使用一个编译器创建库并将它们与另一个编译器链接起来实际上很容易(至少在x86上如此)。
这是一个完全符合以下条件的测试项目:
https://gitlab.com/higaski/Interoperability
但是我想知道链接时间优化(LTO)是否可以在编译器中以某种方式工作?我知道LTO需要某种形式的中间表示形式,例如LLVMs位代码或GCCs GIMPLE,但是也许存在可以同时利用它们的工作流程?
最佳答案
不,LTO不能在编译器之间共享,正是因为LTO实际上是编译器内部表示的转储。即使在同一编译器的发行版中,这种表示也是不稳定的。