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.