TC-L Goals

Things to learn during this stage:

Smart pointers

Usage of std::unique_ptr.

Move semantics

How move semantics make std::unique_ptr a powerful tool.

Basic blocks

Why 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
  • SSA

  • Type safe

  • Target independent

The LLVM compiler infrastructure
  • LLVM IR

  • The optimizer, opt

opt takes 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: llvm-as, llvm-dis, llvm-link, etc.

Using an external runtime

Using a C runtime interacting with the Tiger code.