0,编译 llvm 3.4
Getting Started with the LLVM System — LLVM 3.4 documentation
1,基于LLVM 3.0 的文档主页
Documentation for the LLVM System at SVN head
2,LLVM 作为库的使用方法
3,LLVM C++ 的编程规范
4,编译 llvmorg-18.1.0-rc4 的方法
检出 llvm18 的tag:llvmorg-18.1.0-rc4:
git checkout llvmorg-18.1.0-rc4
配置:
cmake -G "Unix Makefiles" ../llvm -DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;compiler-rt;cross-project-tests;libc;libclc;lld;lldb;mlir;openmp;polly;pstl;flang" -DLLVM_BUILD_EXAMPLES=ON -DLLVM_TARGETS_TO_BUILD="host" -DCMAKE_BUILD_TYPE=Debug -DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_RUNTIMES=all -DLLVM_BUILD_LLVM_DYLIB=ON -DCMAKE_INSTALL_PREFIX=../../local_whole
后台编译:
make -j 34 &
cpu18核36线程,要留两个线程,否则会导致ld命令的拥堵。
5, clang::Stmt 的派生类描述
clang: clang::Stmt Class Reference
6,编译整个llvm 18
cmake -G "Unix Makefiles" ../llvm \
-DLLVM_ENABLE_PROJECTS="bolt;clang;clang-tools-extra;cross-project-tests;lld;lldb;mlir;polly;flang" \
-DLLVM_BUILD_EXAMPLES=ON -DLLVM_TARGETS_TO_BUILD="host" -DCMAKE_BUILD_TYPE=Release \
-DLLVM_ENABLE_ASSERTIONS=ON -DLLVM_ENABLE_RUNTIMES="libc;libunwind;libcxxabi;pstl;libcxx;compiler-rt;openmp \
-DLLVM_BUILD_LLVM_DYLIB=ON -DCMAKE_INSTALL_PREFIX=../../local_release
段尾有彩蛋,关于llvm-libgcc的选项,
7, libc++ 编译指导文档
8,ABI 和 elf 文档
https://www.man7.org/linux/man-pages/man5/elf.5.html
https://www.akkadia.org/drepper/tls.pdf
https://opensource.com/article/22/12/linux-abi
https://docs.kernel.org/admin-guide/abi.html
https://www.classes.cs.uchicago.edu/archive/2009/spring/22620-1/docs/handout-03.pdf
https://wiki.osdev.org/System_V_ABI
https://refspecs.linuxbase.org/elf/x86_64-abi-0.99.pdf
9,关于 %add = add nsw i32 %1, %2 的nsw
10,《LLVM 编译器实战教程》Getting Started with LLVM Core Libraries
11, LLVM IR spec
12, LLVM 的 一些重要类
BasicBlock:
LLVM: llvm::BasicBlock Class Reference
Instruction:
LLVM: llvm::Instruction Class Reference
Value:
LLVM: llvm::Value Class Reference
User:
LLVM: llvm::User Class Reference
13, cmake 构建llvm的配置项
Building LLVM with CMake — LLVM 19.0.0git documentation
14, llvm/example/Kaileidoscope 的教程,设计一个新的语言
原版:
My First Language Frontend with LLVM Tutorial — LLVM 19.0.0git documentation
翻译版: