Definition and Reference of Variables
We assume that each variable is assigned a unique bit number so that it can be used in bit vectors. Likewise, each compiler variable or subexpression α ← a ° b is assigned a bit number.
A variable is defined each time it is assigned a value. A variable is referenced ( used) whenever its value is read.
The statement x := a * b first references a and b and then defines x.
The statement x := x + 1 references x and then defines x.
A computation a ° b is redundant if its value is available in some variable α .
A subexpression is computed whenever it appears in an expression. A subexpression is killed if any of its components is defined or killed.
The statement x[i*3] := a * b computes a * b and i * 3 and kills x[ anything ] .