I n this paper we build upon results of Padua and Wolfe
1: IntroductionFlow dependences are t h e only "true" dependences of a program. Anti delpendences and output dependences are due t o storage re-use and can be eliminated at the price of more memory usage. Removing anti and output dependences may prove very useful t o break data dependence cycles and thereby enabling vectorization and/or improving parallelization.Many papers have been devoted t o the problem of eliminating anti and output dependences. Proposed methods include "array d a t a flow analysis" [5, 81, "array privatization" [7], "variable expansion" [3], "variable renaming" [9] and "node splitting" [9]. See the survey papers of Banerjee, Eigenmann, Nicolau and Padua [2] and Bacon, Graham and Sharp [1], as well as the books of Wolfe [15] and Zima [16], for further references.In this paper we build upon results of Padua and Wolfe [9], who introduce two graph transformations t o eliminate anti and output dependences. We first give a unifed framework for such transformations in Section 2. Then, given a loop nest we aim at determining which statements should be transformed so as to break artificial cycles involving anti or output dependences. The problem of finding the mininum number of statements to be transformed is shown to be difficult: in Section 3, we prove it NP-complete in t h e strong sense. This justifies the intioduction of heuristics in Section 4. Finally, we give some conclusions in Section 5.