输入“/”快速插入内容

Introduction to LLVM - 巴西 UFMG 课程笔记

2024年12月30日修改
2023年6月7日创建
621
787
课程信息
slides
YouTube
b 站
LLVM 信息
时长
共约 2 小时。
21 个视频,每个 5-10min。
点评
1.
不错的新手入门材料。划出了重点 & 脉络结构,明确了学习目标。
2.
细节上,讲解不行。所以,过 1-2 遍,就差不多了。
要点总结
1.
一共 3 个东西:
a.
前端 clang:词法和语法分析,生成 AST(抽象语法树)
b.
后端 llc:codegen
c.
中端 opt:IR 优化
2.
重点是 opt。分 3 个 topic
a.
Visualization 方便 debug
b.
Pass 分 2 种:analysis pass,transform pass
c.
一般会写成一个 tool,封装依赖的多个 pass。
3.
高级概念包括:Loop 的处理
4.
重要的基本功
a.
Region analysis:掌握 2 件事
i.
4 个 motivation: 并行性好,ssa 构建,control dependency,side-channel detection
ii.
visit regions 的 example code
b.
metadata:
i.
可以理解为 IR 之外的补丁,存储不能放在 IR 里的其他信息。
ii.
Debug 信息放在这里,还是很方便的。比如,原始 source code 片段的信息。
iii.
Pass 内使用 metadat 的 api & example code
iv.
使用 metadata 在 IR 之间跟踪 variable 的变化
v.
TBAA metadata,为程序中指针和内存操作提供别名信息,以便优化器能够更好地推断和优化代码。
5.
Clang tools,讲了 3 节课,但感觉不太重要。
a.
AST Matchers。问题:ast 是不是 clang 里的概念,opt 里还有 ast 吗?
6.
后端 llc,没涉及。
备注:
课程本身上 Clang 10.
Mac 上的 Clang 17、Clang 19,复现本文的 code,情况较好。
Ubuntu 上的 Clang 15,复现不好。
Quick introduction to LLVM
名字缩写:Low Level Virtual Machine
看起来,类似 java 的 virtual machine。实际上,不严谨。
LLVM 更像是 Compilation Infrastructure。体现在 2 点:
1.
基于 LLVM 可以更方便的开发 compiler。典型代表,如下表。