To determine data dependence, it is necessary to form the input and output sets for the given statements.
IN(S1) denotes the set of input items of
S1 (items whose values may be read by S1
). OUT(S1) denotes the set of output items (scalar
variables or array elements) of statement S1 (items
whose values may be changed by S1 ).
The IN and OUT sets for the assignment
statement in the loop are shown in the following example:
DO 10 I = 1,10
S1: X(I) = A(I+1) * B
10 CONTINUE
IN(S1) = {A(2), A(3), A(4), ..., A(11), B}
OUT(S1) = {X(1), X(2), X(3), ..., X(10)}
In practice, KAP often approximates the IN and
OUT sets because the actual loop bounds are frequently
unknown at compile time.