You are on page 1of 13

COMPILER

CONSTRUCTION
Lecture 4
THREE-PASS COMPILER

Source Front IR Middle IR Back machine


code End End End code

errors

•Intermediate stage for code


improvement or optimization
2
THREE-PASS COMPILER

Source Front IR Middle IR Back machine


code End End End code

errors

•Analyzes IR and rewrites (or


transforms) IR
3
THREE-PASS COMPILER

Source Front IR Middle IR Back machine


code End End End code

errors

•Primary goal is to reduce running


time of the compiled code
4
THREE-PASS COMPILER

Source Front IR Middle IR Back machine


code End End End code

errors

•May also improve space usage,


power consumption, ...
5
THREE-PASS COMPILER
Source Front IR Middle IR Back machine
code End End End code

errors

• Must preserve “meaning” of the code.


6
OPTIMIZER

IR
IR Opt IR Opt IR Opt Opt IR
1 2 3 n

errors

•Modern optimizers are structured


as a series of passes
7
OPTIMIZER

IR
IR Opt IR Opt IR Opt Opt IR
1 2 3 n

errors

Typical transformations
•Discover & propagate some
constant value 8
OPTIMIZER

IR
IR Opt IR Opt IR Opt Opt IR
1 2 3 n

errors

Typical transformations
•Move a computation to a less
frequently executed place 9
OPTIMIZER

IR
IR Opt IR Opt IR Opt Opt IR
1 2 3 n

errors

Typical transformations
•Specialize some computation
based on context 10
OPTIMIZER

IR
IR Opt IR Opt IR Opt Opt IR
1 2 3 n

errors

Typical transformations
•Discover a redundant computation
& remove it 11
OPTIMIZER

IR
IR Opt IR Opt IR Opt Opt IR
1 2 3 n

errors
Typical transformations
• Remove useless or unreachable code

12
HOMEWORK

What is ad-hoc Lexer?

13

You might also like