给前端作者的性能提示

摘要

这份文档旨在为以LLVM IR为目标的语言前端作者提供一些列性能优化提示。

IR 最佳实践

对于优化器而言,LLVM优劣并存。有时候源码IR的小改变,可能引发生成代码的大变化。

除了以下列表,LLVM最为成熟的前端莫过于Clang。也正因为如此,那些Clang中没有的,你的IR产生的很可能没有有效优化。也可以写个小C程序来看看Clang的IRGen生成的代码。研究Clang的CodeGen文件夹可以得到不少想法。Clang和LLVM的版本是绑定的,所以请确保两者的版本保持一致。另外,强烈建议使用树形结构来开发,尤其是新建工程的时候。

基础

  1. 确保你的模块包含了数据布局规范和目标定为。没有这些,特定目标优化一个也不会起作用。这个对于产生的代码有极大的作用。 2.