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, 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 , S2 is antidependent on
S1 , as in example 2 of 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 of Section A.2.
Antidependence and output dependence relations are sometimes inadvertently caused by programmers' coding practices. These dependencies can often be removed by more careful coding.