Clang 编译阶段
Clang compiler stages
Clang 编译器基于 LLVM 基础架构构建,Clang 前端采用 C/C++ 源代码并生成 LLVM-IR,谁负责使用优化器和代码生成?
既然优化器pass库是要有策略地按顺序放置和调用以生成优化代码,那么指定的顺序在哪里,还有谁生成目标代码?这是 Clang 前端程序的一部分还是有任何其他程序可以进行此优化和生成?
实际上有两个clang
,可以这么说。
一个是前端:它只是进行解析,构建抽象语法树 (AST),并应用各种语义检查。它还可以做一些静态分析和其他有用的事情。可以使用 -cc1
选项访问前端,例如:clang -cc1 -ast-dump
第二个是驱动程序:它从前端获取 AST 并在应用一些优化的同时发出 LLVM IR,然后进行所有其他操作,例如构建目标文件并将各种组件链接在一起。这是调用 clang main.c
或类似命令时通常会发生的情况。
请考虑查看两个 clang 提供的帮助:
clang -help
clang -help-hidden
clang -cc1 -help
clang -cc1 -help-hidden
Clang 编译器基于 LLVM 基础架构构建,Clang 前端采用 C/C++ 源代码并生成 LLVM-IR,谁负责使用优化器和代码生成?
既然优化器pass库是要有策略地按顺序放置和调用以生成优化代码,那么指定的顺序在哪里,还有谁生成目标代码?这是 Clang 前端程序的一部分还是有任何其他程序可以进行此优化和生成?
实际上有两个clang
,可以这么说。
一个是前端:它只是进行解析,构建抽象语法树 (AST),并应用各种语义检查。它还可以做一些静态分析和其他有用的事情。可以使用 -cc1
选项访问前端,例如:clang -cc1 -ast-dump
第二个是驱动程序:它从前端获取 AST 并在应用一些优化的同时发出 LLVM IR,然后进行所有其他操作,例如构建目标文件并将各种组件链接在一起。这是调用 clang main.c
或类似命令时通常会发生的情况。
请考虑查看两个 clang 提供的帮助:
clang -help
clang -help-hidden
clang -cc1 -help
clang -cc1 -help-hidden