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.