Index
A
- alias analysis pass
- analysis pass
- writing / Writing an analysis pass, How to do it…, How it works…
- analysis passes
- using / Using other analysis passes, How to do it…, How it works…
- reference link / See also
- AST
- about / Introduction, Defining Abstract Syntax Tree
- defining / Defining Abstract Syntax Tree, How to do it…
- URL / See also
- AST class
- IR code generation methods, defining / Defining IR code generation methods for each AST class, How to do it…, How it works…
B
- binary expression
- parsing / Parsing binary expressions, How to do it…, See also
- binary operator
- defining / Getting ready, How to do it...
- working / How it works...
- reference link / See also
- bugpoint
- using / Using bugpoint, How to do it…, How it works…
- URL / See also
C
- C++ language
- calling convention
- defining / Defining the calling convention, How to do it…
- C Code
- converting, to LLVM IR / C Code to LLVM IR
- C frontend clang
- Clang/LLVM
- cross-compiling / Cross-compiling Clang/LLVM, How it works..., How to do it..., How it works...
- Clang frontend
- about / Getting ready...
- clang static analyzer
- code
- generating, for loops / Generating code for loops, How to do it..., How it works...
- code emission
- about / Code emission
- code emission phase
- about / Code emission, How to do it…
- common subexpression
- eliminating, from machine code / Eliminating common subexpression from machine code, How to do it…, How it works…
- Context free grammar (CFG) / How it works...
- control flow graph (CFG) / How it works…
- cross-compiler / Cross-compiling Clang/LLVM
- C source code
- converting, to LLVM assembly / Converting a C source code to LLVM assembly, How it works...
D
- DAG
- about / Introduction, Introduction
- instruction, selecting from / Selecting instruction from the DAG, How it works…
- dead code elimination pass
- decision making paradigms
- handling / Handling decision making paradigms – if/then/else constructs, How to do it..., How it works…
- if/then/else / Getting ready, How to do it..., How it works…
- DragonEgg
- using / Using DragonEgg, How to do It…, See also
- URL / See also
E
- emscripten
- URL / Getting ready, See more
- enumeration (enum) / How to do it…
- exception format, LLVM
- URL / See also
- exception handling, LLVM / Exception handling in LLVM, How to do it…, How it works…
- expressions
- reassociating / Reassociating expressions, How it works …
F
- frame lowering
- implementing / Implementing frame lowering, How to do it…, How it works…
G
- garbage collection
- URLs / See also
- garbage collector
- writing, with LLVM / Writing the garbage collector with LLVM, How to do it…, How it works…
- GNU Compiler Collection (GCC) / Understanding modular design
- GO frontend
- using / Using the GO frontend, How it works…
- graphs, in debug mode
- reference link / See also
- GraphViz
- used, for visualizing LLVM IR CFG / Visualizing LLVM IR CFG using GraphViz, How to do it…
- graphviz tool
- URL / Getting ready
H
- hexdump tool / How to do it...
I
- if/then/else construct
- if else statement, clang
- reference link / See also
- inlining transformation pass
- instruction
- scheduling / Scheduling instructions
- selecting, from DAG / Selecting instruction from the DAG, How it works…
- scheduling, in SelectionDAG / Scheduling instructions in SelectionDAG, How it works…
- printing / Printing an instruction, How to do it…, How it works…
- selecting / Selecting an instruction, Getting ready, How to do it…
- instruction encoding
- adding / Adding instruction encoding, How to do it…
- instruction selector
- instruction set
- Intermediate Representation (IR) / Understanding modular design
- IR
- converting, to LLVM bitcode / Converting IR to LLVM bitcode, How to do it..., There's more..., See also
- vectorizing / Vectorizing IR, Getting ready, How to do it..., How it works…
- IR code
- generating, for expressions / Generating IR code for expressions, See also
- generating, for function / Generating IR code for functions, How to do it…, How it works…
- IR code generation methods
- defining, for AST class / Defining IR code generation methods for each AST class, How to do it…, How it works…
- IR functions
- __cxa_throw / How it works…
- __cxa_begin_catch / How it works…
- __cxa_end_catch / How it works…
- IR optimization
- about / IR optimization
- IR optimization support
- adding / Adding IR optimization support, See also
J
- JavaScript
- LLVM IR, connecting to / Converting LLVM IR to JavaScript, How to do it…
- JIT support
- adding / Adding JIT support, How to do it..., How it works…
L
- Left Hand Side (LHS) / How to do it…
- lexer
- about / Implementing a lexer
- implementing / Implementing a lexer, How to do it…, How it works…
- for C++ language, URL / See also
- running, on toy language / Running lexer and parser on our TOY language, How to do it…
- live interval
- analyzing / Analyzing live intervals, Getting ready, How to do it…, How it works…
- about / Analyzing live intervals
- live variable
- about / Analyzing live intervals
- LLDB commands
- URL / See also
- llgo
- URL / See also
- lli tool command / How it works...
- LLVM
- exception handling / Exception handling in LLVM, How to do it…, How it works…
- garbage collector, writing with / Writing the garbage collector with LLVM, How to do it…, How it works…
- llvm-dis command / How it works...
- llvm-dis tool / Converting LLVM bitcode back to LLVM assembly
- llvm-link tool / How to do it...
- LLVM alias analysis
- reference link / See also
- LLVM assembly
- URL / See also
- C source code, converting to / Converting a C source code to LLVM assembly, How it works...
- LLVM bitcode, converting back to / Converting LLVM bitcode back to LLVM assembly
- LLVM bitcode
- IR, converting to / Converting IR to LLVM bitcode, How to do it..., How it works..., There's more...
- converting, to target machine assembly / Converting LLVM bitcode to target machine assembly, How it works...
- converting, back to LLVM assembly / Converting LLVM bitcode back to LLVM assembly
- linking / Linking LLVM bitcode, How it works...
- executing / Executing LLVM bitcode, How it works...
- LLVM bitstream file format
- URL / See also
- LLVM IR
- URL / See also
- transforming / Transforming LLVM IR, How to do it..., There's more...
- combining / Combining LLVM IR, How to do it…, How it works…
- C Code, converting to / C Code to LLVM IR
- converting, to SelectionDAG / LLVM IR to SelectionDAG
- converting, to JavaScript / Converting LLVM IR to JavaScript, How to do it…
- LLVM IR CFG
- visualizing, GraphViz used / Visualizing LLVM IR CFG using GraphViz, How to do it…
- LLVM IR form / Introduction
- LLVM IR instruction
- LLVM pass
- writing / Writing your own LLVM pass, Getting ready, How to do it…
- reference link / See also
- LLVMPasses.a / How it works...
- LLVM PassManager / How it works...
- LLVM utility passes
- using / Using LLDB, How to do it…
- Loop-Invariant Code Motion (LICM) / Transforming and optimizing loops
- loop deletion / Transforming and optimizing loops
- loops
- code, generating for / How to do it..., How it works...
- reference link / See also
- transforming / Transforming and optimizing loops, How to do it…, How it works…
- optimizing / Transforming and optimizing loops, How to do it…, How it works…
- loop vectorization
- about / Vectorizing IR
M
- MachineBasicBlock class
- implementing / Implementing the MachineBasicBlock class, How to do it…, How it works…
- machine code
- about / Introduction
- common subexpression, eliminating from / Eliminating common subexpression from machine code, How to do it…, How it works…
- machine code descriptor
- machine DAG
- target-independent DAG, converting to / Conversion from target-independent DAG to machine DAG
- MachineFunction class
- implementing / Implementing the MachineFunction class, How it works…
- MachineInstrBuilder class
- implementing / How to do it…
- mapping of virtual registers, on physical registers
- Direct Mapping / How it works…
- Indirect Mapping / How it works…
- memory optimization
- pass, writing for / Writing a pass for memory optimization, How to do it…, How it works…
- memory optimization passes
- reference link / See also
- modular design
- about / Understanding modular design
- optimizations, running / How to do it..., How it works..., There's more...
- modular design;about / Understanding modular design
- multiple instructions
- lowering to / Lowering to multiple instructions, How to do it…
- MyPass.o object file / How it works...
- MyPasses.a library / How it works...
N
- native assembler / Cross-compiling Clang/LLVM
- new pass
- pass, using into / Using another pass in a new pass, How it works…
O
- optimization
- levels / Various levels of optimization, How to do it…
- optimization passes
- opt tool / Getting ready, How to do it...
- about / Introduction
- reference link / See Also
- pass, running with / Running your own pass with the opt tool, How to do it…
P
- parser
- about / Implementing a parser
- implementing / Getting ready, How it works…
- running, on toy language / Running lexer and parser on our TOY language, How it works…
- Error handling, URL / See also
- pass
- running, with opt tool / Running your own pass with the opt tool, How to do it…
- using, into new pass / Using another pass in a new pass, How it works…
- registering, with pass manager / Registering a pass with pass manager, How to do it…, How it works…
- writing, for memory optimization / Writing a pass for memory optimization, How to do it…, How it works…
- PassA / How it works...
- Pass class
- reference link / See also
- pass manager
- pass, registering with / Registering a pass with pass manager, How to do it…, How it works…
- reference link / See Also
- PHI node / Getting ready
- prologue-epilogue code
- inserting / Inserting the prologue-epilogue code, How to do it…, How it works…
R
- register allocation
- about / Register allocation
- registers
- allocating / Allocating registers, How to do it…
- defining / Defining registers and registers sets, How it works…
- registers sets
- defining / Defining registers and registers sets, How it works…
- Right Hand Side (RHS) / How to do it…
S
- sample backend
- about / A sample backend
- sanitizers
- using / Using sanitizers, How it works…
- URLs / See also…
- SDAG
- phases / The life of an LLVM IR instruction
- SelectionDAG
- LLVM IR, converting to / LLVM IR to SelectionDAG
- legalizing / Legalizing SelectionDAG, How to do it…, How it works…
- optimizing / Optimizing SelectionDAG, How it works…
- instruction, scheduling in / Scheduling instructions in SelectionDAG, How it works…
- Selection DAG legalization
- about / SelectionDAG legalization
- Selection DAG node
- about / LLVM IR to SelectionDAG
- sibling call optimization
- about / Sibling call optimisation
- working / How to do it…, How it works…
- simple expression
- parsing / Parsing simple expressions, How to do it…
- single static assignment (SSA) / Getting ready
- static analyzer and checkers
- URL / See also
- static single assignment (SSA) / Introduction
- Static Single Assignment (SSA) / Understanding modular design, How to do it…
- subtarget
- supporting / Supporting a subtarget, How to do it…
- Superword-Level Parallelism (SLP)
- about / Vectorizing IR
T
- TableGen
- used, for describing target / Describing targets using TableGen, How it works
- tablegen function / Defining registers and registers sets
- tail call optimization
- about / Tail call optimization
- working / How to do it…, How it works…
- target
- describing, TableGen used / Describing targets using TableGen, How it works
- registering / Registering a target, How to do it…, How it works…
- target-independent DAG
- converting, to machine DAG / Conversion from target-independent DAG to machine DAG
- target machine assembly
- LLVM bitcode, converting to / Converting LLVM bitcode to target machine assembly, How it works...
- toy language
- defining / Defining a TOY language, How to do it…
- lexer running on / Running lexer and parser on our TOY language, How it works…
- parser, running on / How it works…
- transformation passes
- reference link / See also
U
- unary operator
- defining / Getting ready, How to do it...
- working / How it works...
- reference link / See also
- Utility passes
- using / Using LLVM utility passes, How to do it...
- URL / See also
V
- Valgrind
- about / Using sanitizers
- vectorization
- about / Vectorizing IR