|
| 1 | +#LLVM 词典 |
| 2 | +##定义 |
| 3 | +**A** |
| 4 | + |
| 5 | +__ADCE__ |
| 6 | + |
| 7 | +Aggressive Dead Code Elimination |
| 8 | +积极的死代码消除 |
| 9 | + |
| 10 | +__AST__ |
| 11 | + |
| 12 | +Abstract Syntax Tree |
| 13 | +抽象语法树 |
| 14 | + |
| 15 | +由于 Clang 的影响(大多是由于 C,尤其是 C++ 错综复杂的解析和语义分析),典型的 LLVM 社区中的 AST 的定义大概是“输入程序的编译器第一个完整的符号(与文本相反)表示”。因此,一个 “AST” 可能更像一个通用图而不是一棵“树”(考虑一个链表节点的符号表示)。这个工作的定义更接近一些作者所谓的“带注释的抽象语法树”。 |
| 16 | + |
| 17 | +使用你最喜欢的编译器书籍和搜索引擎来获取更多信息。 |
| 18 | +<hr> |
| 19 | +**B** |
| 20 | + |
| 21 | +__BB Vectorization__ |
| 22 | + |
| 23 | +Basic-Block Vectorization |
| 24 | +基本块向量化 |
| 25 | + |
| 26 | +__BURS__ |
| 27 | + |
| 28 | +Bottom Up Rewriting System — A method of instruction selection for code generation. |
| 29 | + |
| 30 | +自底向上重写系统-一种代码生成中的指令选择方法。一个例子是 [BURG](http://www.program-transformation.org/Transform/BURG) 工具。 |
| 31 | +<hr> |
| 32 | + |
| 33 | +**C** |
| 34 | + |
| 35 | +__CSE__ |
| 36 | + |
| 37 | +Common Subexpression Elimination. |
| 38 | + |
| 39 | +共同子表达式消除。一种移除共同子表达式的优化。例如 `(a+b)*(a+b)` 有两个相同的子表达式: `(a+b)`。这个优化使得只做一次加法然后执行乘法(但是只针对正确且安全的计算)。 |
| 40 | +<hr> |
| 41 | + |
| 42 | +**D** |
| 43 | + |
| 44 | +__DAG__ |
| 45 | + |
| 46 | +Directed Acyclic Graph |
| 47 | + |
| 48 | +有向不循环图 |
| 49 | + |
| 50 | +__Derived Pointer__ |
| 51 | + |
| 52 | +一个指向对象内部的指针,使得垃圾回收器不能使用此指针进行可达性分析。只要一个 derived 指针存在,对应的对象的指针必须保留在 root 内,否则垃圾回收器可能会释放引用的对象。对于拷贝收集器,derived 指针具有额外的风险使得它们可能在任何安全点处无效化。这个机制被用来对抗对象指针。 |
| 53 | + |
| 54 | +__DSA__ |
| 55 | + |
| 56 | +数据结构分析 |
| 57 | + |
| 58 | +__DSE__ |
| 59 | + |
| 60 | +Dead Store Elimination |
| 61 | + |
| 62 | +可不达存储消除 |
| 63 | + |
| 64 | +<hr> |
| 65 | + |
| 66 | +**F** |
| 67 | + |
| 68 | +__FCA__ |
| 69 | + |
| 70 | +First Class Aggregate |
| 71 | + |
| 72 | +第一类集合 |
| 73 | +<hr> |
| 74 | + |
| 75 | +**G** |
| 76 | + |
| 77 | +__GC__ |
| 78 | + |
| 79 | +垃圾回收。使用可达性分析替代显式的内存管理来回首不再使用的内存。 |
| 80 | + |
| 81 | +<hr> |
| 82 | + |
| 83 | +**H** |
| 84 | + |
| 85 | +__Heap__ |
| 86 | + |
| 87 | +在垃圾回收中,使用可达性分析管理的内存区域 |
| 88 | + |
| 89 | +<hr> |
| 90 | + |
| 91 | +**I** |
| 92 | + |
| 93 | +__IPA__ |
| 94 | + |
| 95 | +Inter-Procedural Analysis. |
| 96 | + |
| 97 | +过程间分析。引用到过程、函数和编译单元(模块)之间发生的大量代码分析。 |
| 98 | + |
| 99 | +__IPO__ |
| 100 | + |
| 101 | +过程间优化。引用到过程、函数和编译单元(模块)之间发生的大量代码优化。 |
| 102 | + |
| 103 | +__ISel__ |
| 104 | + |
| 105 | +指令选择 |
| 106 | + |
| 107 | +<hr> |
| 108 | + |
| 109 | +**L** |
| 110 | + |
| 111 | +__LCSSA__ |
| 112 | + |
| 113 | +Loop-Closed Static Single Assignment Form |
| 114 | + |
| 115 | +闭环静态单赋值形式 |
| 116 | + |
| 117 | +__LICM__ |
| 118 | + |
| 119 | +Loop Invariant Code Motion |
| 120 | + |
| 121 | +循环不变量 |
| 122 | + |
| 123 | + |
| 124 | +__Load-VN__ |
| 125 | + |
| 126 | +负荷值编号 |
| 127 | + |
| 128 | +__LTO__ |
| 129 | + |
| 130 | +链接时优化 |
| 131 | +<hr> |
| 132 | + |
| 133 | +**M** |
| 134 | + |
| 135 | +__MC__ |
| 136 | + |
| 137 | +机器码 |
| 138 | + |
| 139 | +<hr> |
| 140 | + |
| 141 | +**O** |
| 142 | + |
| 143 | +__Object Pointer__ |
| 144 | + |
| 145 | +指向对象的指针,使得垃圾回收器可以追踪对象内的引用。这个机制用来对抗derived 指针。 |
| 146 | +<hr> |
| 147 | + |
| 148 | +**P** |
| 149 | + |
| 150 | +__PRE__ |
| 151 | + |
| 152 | +Partial Redundancy Elimination |
| 153 | + |
| 154 | +部分冗余消除 |
| 155 | + |
| 156 | +<hr> |
| 157 | + |
| 158 | +**R** |
| 159 | + |
| 160 | +__RAUW__ |
| 161 | + |
| 162 | +Replace All Uses With. The functions User::replaceUsesOfWith(), Value::replaceAllUsesWith(), and Constant::replaceUsesOfWithOnConstant() implement the replacement of one Value with another by iterating over its def/use chain and fixing up all of the pointers to point to the new value. See also def/use chains. |
| 163 | + |
| 164 | +__Reassociation__ |
| 165 | + |
| 166 | +Rearranging associative expressions to promote better redundancy elimination and other optimization. For example, changing (A+B-A) into (B+A-A), permitting it to be optimized into (B+0) then (B). |
| 167 | + |
| 168 | +__Root__ |
| 169 | + |
| 170 | +在垃圾回收中,堆中的一个指针变量,垃圾回收器从这个指针开始可达性分析。在代码生成的上下文中,“root”几乎总是指向“stack root”-一个函数调用过程中的局部或临时变量。 |
| 171 | + |
| 172 | +__RPO__ |
| 173 | + |
| 174 | +Reverse postorder |
| 175 | + |
| 176 | +<hr> |
| 177 | + |
| 178 | +**S** |
| 179 | + |
| 180 | +__Safe Point__ |
| 181 | + |
| 182 | +在垃圾回收中,必须标识栈根使得可达性分析能够执行。对于每条指令提供这个信息可能变得不可能,所以这个信息只在指定的安全点计算。使用拷贝收集器,derived 指针绝对不可以跨安全点并且对象指针必须从栈根重新加载。 |
| 183 | + |
| 184 | +__SDISel__ |
| 185 | + |
| 186 | +Selection DAG Instruction Selection. |
| 187 | + |
| 188 | +DAG 指令选择 |
| 189 | + |
| 190 | +__SCC__ |
| 191 | + |
| 192 | +Strongly Connected Component |
| 193 | + |
| 194 | +强链接组件 |
| 195 | + |
| 196 | +__SCCP__ |
| 197 | + |
| 198 | +Sparse Conditional Constant Propagation |
| 199 | + |
| 200 | +稀疏的条件常量传播 |
| 201 | + |
| 202 | +__SLP__ |
| 203 | + |
| 204 | +Superword-Level Parallelism, 类似 [Basic-Block Vectorization](#). |
| 205 | + |
| 206 | +__SRoA__ |
| 207 | + |
| 208 | +Scalar Replacement of Aggregates |
| 209 | + |
| 210 | +聚合标量替换 |
| 211 | + |
| 212 | +__SSA__ |
| 213 | + |
| 214 | +Static Single Assignment |
| 215 | + |
| 216 | +静态单赋值 |
| 217 | + |
| 218 | +__Stack Map__ |
| 219 | + |
| 220 | +在垃圾回收中,由代码生成器发出的元数据在一个函数调用的栈帧中标识了roots。 |
| 221 | + |
| 222 | +<hr> |
| 223 | + |
| 224 | +**T** |
| 225 | + |
| 226 | +__TBAA__ |
| 227 | + |
| 228 | +Type-Based Alias Analysis |
| 229 | + |
| 230 | +基于类型的别名分析 |
0 commit comments