Things to learn during this stage that you should remember:
- Smart pointers
- Usage of
- Move semantics
- How move semantics make
std::unique_ptra powerful tool.
- Basic blocks
- Why do we need them, and how LLVM uses them in control-flow handling.
- Inner functions and their impact on memory management at runtime
- Reaching non local variables.
- Properties of LLVM IR
- Type safe
- Target independent
- The LLVM compiler infrastructure
- LLVM IR
- The optimizer,
opttakes LLVM IR and applies optimization passes on it. This allows you to select several optimization passes to apply on the LLVM IR and observe the resulting LLVM IR.
- The LLVM Core libraries
- The LLVM Tools:
- Using an external runtime
- Using a C runtime interacting with the Tiger code.