Bill Wendling | 5cda901 | 2012-06-20 10:36:41 +0000 | [diff] [blame] | 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. |