For any two statements, S1 and S2 , one
of the three types of data dependence relations may be true, or the
statements may be data independent.
If some item X is in OUT(S1) and
X is in IN(S2) and S2 is to
use the value of X computed in S1 , then
S2 is flow dependent on S1 , as in example
1 in Section A.2.
If some item X is in IN(S1) and
X is in OUT(S2) , but S1
is to use the value of X before it is changed
by S2 , then S2 is antidependent
on S1 , as in example 2 in Section A.2.
If some item X is in OUT(S1) and
X is in OUT(S2) and the value computed
by S2 is to be stored after the value computed by
S1 is stored, S2 is output dependent
on S1 , as in example 3 in Section A.2.
Antidependence and output dependence relations are sometimes inadvertently caused by programmers' coding practices. These dependences can often be removed by more careful coding.