llvm 一个简单函数的优化
LLVM优化一个简单函数
一个优化的、领先的编译器通常被组织为:
- 一个将源代码翻译为一个中间表示(IR)的前端。
- 一个目标无关的优化流水线:一系列,它们持续重写IR,以消除低效性以及不能容易翻译为机器码的形式。有时称之为“中端(middle end)”。
- 一个目标相关的后端,生成汇编代码或机器码。
- 删除没有前驱的基本块。
- 如果仅有一个前驱且该前驱仅有一个后继,将基本块与且前驱合并。
- 消除只有一个前驱的基本块的PHI节点。
- 消除仅包含无条件分支的基本块。
- 将invoke指令改为调用nounwind函数。
- 把形如“if (x) if (y)”的情形改为“if (x&y)”