cc1 passes

The overall control structure of the compiler is in toplev.c. This file is responsible for initialisation, decoding arguments, opening and closing files, and sequencing the passes.

Pass Description Dump
Parsing Translates C code to a high level tree representation. Semantic analysis, data type analysis happen here, as well as function inlining and constant folding. When a complete function definition has been read, the tree representation is converted to RTL code. RTL is target dependent as RTL is generated from available named instruction patterns. .rtl
Sibling call Tail recursion elimination, tail and sibling call optimisation. .sibling
Jump Simplifies jumps to the following insn, jumps across jumps, jumps to jumps .
SSA passes With static single assignment enabled, each pseudo reg is only set once, enabling more optimisations in linear time. Conditional constant propagation, dead code elimination. .ssa*, .ussa
Register scan Finds first and last use of registers. .
Jump conversion Converts if-then-else forms to conditional assignment. .
Jump threading Detects and optimises conditional jumps that branch to an identical or inverse test. .jump
CSE Common subexpression elimination and constant propagation. May cause another jump pass if conditional jumps become unconditional. .cse
addressof Translate any pseudo regs that had their address taken into MEMs. .addressof
GCSE Global common subexpression elimination. Lazy code motion, load and store motion. Global constant propagation. .gcse

cont