1 .. _lexicon: 2 3 ================ 4 The LLVM Lexicon 5 ================ 6 7 .. note:: 8 9 This document is a work in progress! 10 11 Definitions 12 =========== 13 14 A 15 - 16 17 **ADCE** 18 Aggressive Dead Code Elimination 19 20 B 21 - 22 23 **BURS** 24 25 Bottom Up Rewriting System --- A method of instruction selection for code 26 generation. An example is the `BURG 27 <http://www.program-transformation.org/Transform/BURG>`_ tool. 28 29 C 30 - 31 32 **CSE** 33 Common Subexpression Elimination. An optimization that removes common 34 subexpression compuation. For example ``(a+b)*(a+b)`` has two subexpressions 35 that are the same: ``(a+b)``. This optimization would perform the addition 36 only once and then perform the multiply (but only if it's compulationally 37 correct/safe). 38 39 D 40 - 41 42 **DAG** 43 Directed Acyclic Graph 44 45 .. _derived pointer: 46 .. _derived pointers: 47 48 **Derived Pointer** 49 A pointer to the interior of an object, such that a garbage collector is 50 unable to use the pointer for reachability analysis. While a derived pointer 51 is live, the corresponding object pointer must be kept in a root, otherwise 52 the collector might free the referenced object. With copying collectors, 53 derived pointers pose an additional hazard that they may be invalidated at 54 any `safe point`_. This term is used in opposition to `object pointer`_. 55 56 **DSA** 57 Data Structure Analysis 58 59 **DSE** 60 Dead Store Elimination 61 62 F 63 - 64 65 **FCA** 66 First Class Aggregate 67 68 G 69 - 70 71 **GC** 72 Garbage Collection. The practice of using reachability analysis instead of 73 explicit memory management to reclaim unused memory. 74 75 H 76 - 77 78 .. _heap: 79 80 **Heap** 81 In garbage collection, the region of memory which is managed using 82 reachability analysis. 83 84 I 85 - 86 87 **IPA** 88 Inter-Procedural Analysis. Refers to any variety of code analysis that 89 occurs between procedures, functions or compilation units (modules). 90 91 **IPO** 92 Inter-Procedural Optimization. Refers to any variety of code optimization 93 that occurs between procedures, functions or compilation units (modules). 94 95 **ISel** 96 Instruction Selection 97 98 L 99 - 100 101 **LCSSA** 102 Loop-Closed Static Single Assignment Form 103 104 **LICM** 105 Loop Invariant Code Motion 106 107 **Load-VN** 108 Load Value Numbering 109 110 **LTO** 111 Link-Time Optimization 112 113 M 114 - 115 116 **MC** 117 Machine Code 118 119 O 120 - 121 .. _object pointer: 122 .. _object pointers: 123 124 **Object Pointer** 125 A pointer to an object such that the garbage collector is able to trace 126 references contained within the object. This term is used in opposition to 127 `derived pointer`_. 128 129 P 130 - 131 132 **PRE** 133 Partial Redundancy Elimination 134 135 R 136 - 137 138 **RAUW** 139 140 Replace All Uses With. The functions ``User::replaceUsesOfWith()``, 141 ``Value::replaceAllUsesWith()``, and 142 ``Constant::replaceUsesOfWithOnConstant()`` implement the replacement of one 143 Value with another by iterating over its def/use chain and fixing up all of 144 the pointers to point to the new value. See 145 also `def/use chains <ProgrammersManual.html#iterate_chains>`_. 146 147 **Reassociation** 148 Rearranging associative expressions to promote better redundancy elimination 149 and other optimization. For example, changing ``(A+B-A)`` into ``(B+A-A)``, 150 permitting it to be optimized into ``(B+0)`` then ``(B)``. 151 152 .. _roots: 153 .. _stack roots: 154 155 **Root** 156 In garbage collection, a pointer variable lying outside of the `heap`_ from 157 which the collector begins its reachability analysis. In the context of code 158 generation, "root" almost always refers to a "stack root" --- a local or 159 temporary variable within an executing function.</dd> 160 161 **RPO** 162 Reverse postorder 163 164 S 165 - 166 167 .. _safe point: 168 169 **Safe Point** 170 In garbage collection, it is necessary to identify `stack roots`_ so that 171 reachability analysis may proceed. It may be infeasible to provide this 172 information for every instruction, so instead the information may is 173 calculated only at designated safe points. With a copying collector, 174 `derived pointers`_ must not be retained across safe points and `object 175 pointers`_ must be reloaded from stack roots. 176 177 **SDISel** 178 Selection DAG Instruction Selection. 179 180 **SCC** 181 Strongly Connected Component 182 183 **SCCP** 184 Sparse Conditional Constant Propagation 185 186 **SRoA** 187 Scalar Replacement of Aggregates 188 189 **SSA** 190 Static Single Assignment 191 192 **Stack Map** 193 In garbage collection, metadata emitted by the code generator which 194 identifies `roots`_ within the stack frame of an executing function. 195