Optimize and canonicalize an expression tree.
Fiddle with double operators so that the rvalue is a pointer
(this is needed by the 8086 code generator).
op op
/ \ / \
e1 e2 e1 ,
/ \
= &
/ \ \
fr e2 fr
e1 op (*p) e1 op p
e1 op c e1 op &dc
e1 op v e1 op &v
Optimize and canonicalize an expression tree. Fiddle with double operators so that the rvalue is a pointer (this is needed by the 8086 code generator).
op op / \ / \ e1 e2 e1 , / \ = & / \ \ fr e2 fr
e1 op (*p) e1 op p e1 op c e1 op &dc e1 op v e1 op &v