LLVM 源码工程目录介绍
llvm_examples_ - 使用 LLVM IR 和 JIT 的例子。
llvm_include_ - 导出的头文件。
llvm_lib_ - 主要源文件都在这里。
llvm_project_ - 创建自己基于 LLVM 的项目的目录。
llvm_test_ - 基于 LLVM 的回归测试,健全检察。
llvm_suite_ - 正确性,性能和基准测试套件。
llvm_tools_ - 基于 lib 构建的可以执行文件,用户通过这些程序进行交互,-help 可以查看各个工具详细使用。
llvm_utils_ - LLVM 源代码的实用工具,比如,查找 LLC 和 LLI 生成代码差异工具, Vim 或 Emacs 的语法高亮工具等。
lib 目录介绍
llvm_lib_IR/ - 核心类比如 Instruction 和 BasicBlock。
llvm_lib_AsmParser/ - 汇编语言解析器。
llvm_lib_Bitcode/ - 读取和写入字节码
llvm_lib_Analysis/ - 各种对程序的分析,比如 Call Graphs,Induction Variables,Natural Loop Identification 等等。
llvm_lib_Transforms/ - IR-to-IR 程序的变换。
llvm_lib_Target/ - 对像 X86 这样机器的描述。
llvm_lib_CodeGen/ - 主要是代码生成,指令选择器,指令调度和寄存器分配。
llvm_lib_ExecutionEngine/ - 在解释执行和JIT编译场景能够直接在运行时执行字节码的库。
工具链命令介绍
基本命令
llvm-as - 汇编器,将 .ll 汇编成字节码。
llvm-dis - 反汇编器,将字节码编成可读的 .ll 文件。
opt - 字节码优化器。
llc - 静态编译器,将字节码编译成汇编代码。
lli - 直接执行 LLVM 字节码。
llvm-link - 字节码链接器,可以把多个字节码文件链接成一个。
llvm-ar - 字节码文件打包器。
llvm-lib - LLVM lib.exe 兼容库工具。
llvm-nm - 列出字节码和符号表。
llvm-config - 打印 LLVM 编译选项。
llvm-diff - 对两个进行比较。
llvm-cov - 输出 coverage infomation。
llvm-profdata - Profile 数据工具。
llvm-stress - 生成随机 .ll 文件。
llvm-symbolizer - 地址对应源码位置,定位错误。
llvm-dwarfdump - 打印 DWARF。
调试工具
bugpoint - 自动测试案例工具
llvm-extract - 从一个 LLVM 的模块里提取一个函数。
llvm-bcanalyzer - LLVM 字节码分析器。
开发工具
FileCheck - 灵活的模式匹配文件验证器。
tblgen - C++ 代码生成器。
lit - LLVM 集成测试器。
llvm-build - LLVM 构建工程时需要的工具。
llvm-readobj - LLVM Object 结构查看器。