773 B
773 B
Intermediate Representation
Static Single Assignment
The SSA IR follows a simple rule: every value is assigned exactly once.
Basic Blocks
Every function has a list of basic blocks. Basic blocks store values in the order they appear in the original code.
Instructions
Instructions are no different from values. The calculation 1 + 2
is represented as 3 values using 2 int constants and 1 binary operation:
t0 = 1
t1 = 2
t2 = t0 + t1
All of these are considered values even in cases where the type of the value is void
such as in procedural function calls with side effects.
Pointers
There are no IDs or indices, therefore values don't know their position in a basic block.
Values reference other values by including a pointer to them.