假设有人想使用LLVM静态编译给定的语言,将它首先转换为C然后使用CLang而不是处理直接IR转换的最大差异(优点和缺点)是什么。
我认为明显的答案是通过使用知道源语言的前端,更容易想出一个优化的IR表示,而不是期望CLang能够很好地处理生成的C语言。
我在这里遗失了什么?
答案 0 :(得分:1)
使用通用C后端的优点:
缺点是:
gcc
的某些部分,等等。没有它,裸LLVM可以单独使用,并且可以保留依赖关系自包含的。大多数情况下的优化不是问题。 Clang故意生成极其非最佳的LLVM IR。 LLVM应该关注所有的优化,而不是前端。当然,除非您可以进行一些高级优化,否则它们将不依赖于您的后端选择。