2023年10月

GCC

编译流程:

Frontend pass :
通过源码生成 Abstract Syntax Tree (AST)

Middle-end pass :
将 AST 转换为 GIMPLE 中间表达(high-level,语言无关)
将 GIMPLE 转换为 SSA (Static Single Assignment) 格式

Backend pass :
将 GIMPLE 转换为 low level, 机器无关的中间表达 RTL (Register Transfer Language)

IPA : Interprocedural Analysis,考虑多个函数或多个文件的优化

使用 -fdump-passes 编译选项输出 GCC 使用的所有 pass
-fdump-tree-all 输出所有 gimple pass
-fdump-rtl-all 输出所有 RTL pass

编译选项:

-m : 机器相关选项

LLVM

llvm IR