Merging r259695:
[oota-llvm.git] / docs / Lexicon.rst
index 6ebe61429f96c68720554c9bf5c1636a80817b41..912dee2cf0790e77e18f689bc11d74e246233ca2 100644 (file)
@@ -1,5 +1,3 @@
-.. _lexicon:
-
 ================
 The LLVM Lexicon
 ================
@@ -17,11 +15,30 @@ A
 **ADCE**
     Aggressive Dead Code Elimination
 
+**AST**
+    Abstract Syntax Tree.
+
+    Due to Clang's influence (mostly the fact that parsing and semantic
+    analysis are so intertwined for C and especially C++), the typical
+    working definition of AST in the LLVM community is roughly "the
+    compiler's first complete symbolic (as opposed to textual)
+    representation of an input program".
+    As such, an "AST" might be a more general graph instead of a "tree"
+    (consider the symbolic representation for the type of a typical "linked
+    list node"). This working definition is closer to what some authors
+    call an "annotated abstract syntax tree".
+
+    Consult your favorite compiler book or search engine for more details.
+
 B
 -
 
-**BURS**
+.. _lexicon-bb-vectorization:
 
+**BB Vectorization**
+    Basic-Block Vectorization
+
+**BURS**
     Bottom Up Rewriting System --- A method of instruction selection for code
     generation.  An example is the `BURG
     <http://www.program-transformation.org/Transform/BURG>`_ tool.
@@ -29,11 +46,20 @@ B
 C
 -
 
+**CFI**
+    Call Frame Information. Used in DWARF debug info and in C++ unwind info
+    to show how the function prolog lays out the stack frame.
+
+**CIE**
+    Common Information Entry.  A kind of CFI used to reduce the size of FDEs.
+    The compiler creates a CIE which contains the information common across all
+    the FDEs.  Each FDE then points to its CIE.
+
 **CSE**
     Common Subexpression Elimination. An optimization that removes common
     subexpression compuation. For example ``(a+b)*(a+b)`` has two subexpressions
     that are the same: ``(a+b)``. This optimization would perform the addition
-    only once and then perform the multiply (but only if it's compulationally
+    only once and then perform the multiply (but only if it's computationally
     correct/safe).
 
 D
@@ -65,6 +91,10 @@ F
 **FCA**
     First Class Aggregate
 
+**FDE**
+    Frame Description Entry. A kind of CFI used to describe the stack frame of
+    one function.
+
 G
 -
 
@@ -101,9 +131,21 @@ L
 **LCSSA**
     Loop-Closed Static Single Assignment Form
 
+**LGTM**
+    "Looks Good To Me". In a review thread, this indicates that the
+    reviewer thinks that the patch is okay to commit.
+
 **LICM**
     Loop Invariant Code Motion
 
+**LSDA**
+    Language Specific Data Area.  C++ "zero cost" unwinding is built on top a
+    generic unwinding mechanism.  As the unwinder walks each frame, it calls
+    a "personality" function to do language specific analysis.  Each function's
+    FDE points to an optional LSDA which is passed to the personality function.
+    For C++, the LSDA contain info about the type and location of catch
+    statements in that function.
+
 **Load-VN**
     Load Value Numbering
 
@@ -116,6 +158,15 @@ M
 **MC**
     Machine Code
 
+N
+-
+
+**NFC**
+  "No functional change". Used in a commit message to indicate that a patch
+  is a pure refactoring/cleanup.
+  Usually used in the first line, so it is visible without opening the
+  actual commit email.
+
 O
 -
 .. _object pointer:
@@ -142,7 +193,7 @@ R
     ``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 <ProgrammersManual.html#iterate_chains>`_.
+    also `def/use chains <ProgrammersManual.html#iterating-over-def-use-use-def-chains>`_.
 
 **Reassociation**
     Rearranging associative expressions to promote better redundancy elimination
@@ -156,7 +207,7 @@ R
     In garbage collection, a pointer variable lying outside of the `heap`_ from
     which the collector begins its reachability analysis. In the context of code
     generation, "root" almost always refers to a "stack root" --- a local or
-    temporary variable within an executing function.</dd>
+    temporary variable within an executing function.
 
 **RPO**
     Reverse postorder
@@ -183,6 +234,10 @@ S
 **SCCP**
     Sparse Conditional Constant Propagation
 
+**SLP**
+    Superword-Level Parallelism, same as :ref:`Basic-Block Vectorization
+    <lexicon-bb-vectorization>`.
+
 **SRoA**
     Scalar Replacement of Aggregates
 
@@ -192,3 +247,10 @@ S
 **Stack Map**
     In garbage collection, metadata emitted by the code generator which
     identifies `roots`_ within the stack frame of an executing function.
+
+T
+-
+
+**TBAA**
+    Type-Based Alias Analysis
+