使用LLVM实现高水平的优化是否容易?
举一个具体的例子,让我们假设我有一个简单的语言,我想编写一个编译器.
我可以很容易地创建compilation-to-C后端并依赖clang -O3.为此目的使用LLVM API是否容易?
小智 6
除了一些高级别(例如,知道高级语言特性或未在LLVM IR中编码的细节)优化之外,Clang的后端仅仅生成简单的IR并运行一些LLVM优化传递.它.opt当使用构建所有LLVM工具的C++库时,所有这些(或至少大多数)都应该通过命令以及API调用可用.有关简单示例,请参阅教程.我看到了几个优点:
#defines,模糊的pragma,instrincts或命令行选项)来提供它们.我正在谈论像向量,保证(好吧,比在C中更多 - AFAIK,一些代码生成器忽略它们)尾调用,纯/只读函数,对内存布局和类型转换的更多控制(例如零扩展与符号扩展).当然,你可能不需要大部分.