Note
This document is a work in progress!
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.
RAUW
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.
Splat refers to a vector of identical scalar elements.
The term is based on the PowerPC Altivec instructions that provided this functionality in hardware. For example, “vsplth” and the corresponding software intrinsic “vec_splat()”. Examples of other hardware names for this action include “duplicate” (ARM) and “broadcast” (x86).