Parallelization depends upon the solution of a large number of data-flow analysis problems, which share many commonalities. Traditional data-flow analysis frameworks help reduce development time and improve correctness by capturing these common features in a single module . In an interprocedural setting, a framework is even more important because of the complexity of collecting and managing information about all the procedures in a program.
We use FIAT , a tool which encapsulates the common features of interprocedural analysis, in combination with the Stanford SUIF compiler to constitute our interprocedural parallelization system. The FIAT system has been described previously, but we have extended the system to obtain precise flow-sensitive interprocedural results through the combination of two techniques which we now describe. We have also added to the system a mathematical formulation of array reshapes (see Section 5.2) in order to support interprocedural array analysis. This section describes FIAT's parameterized templates that drive the parallelization analysis.