Initial revision
This commit is contained in:
58
doc/ego/ud/ud1
Normal file
58
doc/ego/ud/ud1
Normal file
@@ -0,0 +1,58 @@
|
||||
.bp
|
||||
.NH 1
|
||||
Use-Definition analysis
|
||||
.NH 2
|
||||
Introduction
|
||||
.PP
|
||||
The "Use-Definition analysis" phase (UD) consists of two related optimization
|
||||
techniques that both depend on "Use-Definition" information.
|
||||
The techniques are Copy Propagation and Constant Propagation.
|
||||
They are best explained via an example (see Figs. 11.1 and 11.2).
|
||||
.DS
|
||||
(1) A := B A := B
|
||||
... --> ...
|
||||
(2) use(A) use(B)
|
||||
|
||||
Fig. 11.1 An example of Copy Propagation
|
||||
.DE
|
||||
.DS
|
||||
(1) A := 12 A := 12
|
||||
... --> ...
|
||||
(2) use(A) use(12)
|
||||
|
||||
Fig. 11.2 An example of Constant Propagation
|
||||
.DE
|
||||
Both optimizations have to check that the value of A at line (2)
|
||||
can only be obtained at line (1).
|
||||
Copy Propagation also has to assure that the value of B is
|
||||
the same at line (1) as at line (2).
|
||||
.PP
|
||||
One purpose of both transformations is to introduce
|
||||
opportunities for the Dead Code Elimination optimization.
|
||||
If the variable A is used nowhere else, the assignment A := B
|
||||
becomes useless and can be eliminated.
|
||||
.sp 0
|
||||
If B is less expensive to access than A (e.g. this is sometimes the case
|
||||
if A is a local variable and B is a global variable),
|
||||
Copy Propagation directly improves the code itself.
|
||||
If A is cheaper to access the transformation will not be performed.
|
||||
Likewise, a constant as operand may be cheeper than a variable.
|
||||
Having a constant as operand may also facilitate other optimizations.
|
||||
.PP
|
||||
The design of UD is based on the theory described in section
|
||||
14.1 and 14.3 of.
|
||||
.[
|
||||
aho compiler design
|
||||
.]
|
||||
As a main departure from that theory,
|
||||
we do not demand the statement A := B to become redundant after
|
||||
Copy Propagation.
|
||||
If B is cheaper to access than A, the optimization is always performed;
|
||||
if B is more expensive than A, we never do the transformation.
|
||||
If A and B are equally expensive UD uses the heuristic rule to
|
||||
replace infrequently used variables by frequently used ones.
|
||||
This rule increases the chances of the assignment to become useless.
|
||||
.PP
|
||||
In the next section we will give a brief outline of the data
|
||||
flow theory used
|
||||
for the implementation of UD.
|
||||
Reference in New Issue
Block a user