Many common compiler optimizations require precise analysis of the flow of data within a program. This project will extend the data flow analysis algorithms to apply them to explicitly parallel imperative languages. The basis for this work will be the Static Single Assignment (SSA) form of a program, which was developed for sequential languages. This project will use a nested graph intermediate representation to describe the sequential and parallel parts of the program. New constructs will be added to the SSA form to describe the parallelism and nondeterminism that arises from explicitly parallel programs. The algorithms for generating the SSA representation of a program will be modified to handle the parallel constructs. New algorithms will be developed to find potential anomalies in parallel code. A prototype compiler has been developed (with prior NSF support) that recognizes the emerging ANSI standard parallel Fortran syntax. All of the algorithms developed for this project will be implemented in that system.