Interprocedural Symbolic Analysis
The presence of procedure calls complicates analysis of programs, and existing parallelizing compilers give up on dependence analysis of loops that contain procedure calls. In our program analysis framework, procedures are treated as abstract operators, and are modeled by their effects on program variables. Procedures are abstracted by closed form expressions that are solutions to the system of recurrences defined by their bodies. External side effects such as input/output statements are also taken into account. The derived knowledge about actual parameters of procedures can be used to simplify [Weg76a] or partially evaluate [JGS93] the procedures. Procedure specialization [CL73], also known as procedure cloning [CHK92], can be very beneficial in the enhancement and exploitation of the parallelism available in programs. There are, however, many efficiency issues and tradeoffs involved in interprocedural analysis. We do not discuss those issues here, instead, we give an example of interprocedural symbolic analysis in our framework, and refer the interested reader to the literature [CHK92, HMCCR93, Hav94, HK91, Iri93, TIF86].
KeywordsDependence Analysis Code Segment Induction Variable Dependence Testing Symbolic Analysis
Unable to display preview. Download preview PDF.