CISC 872 Advanced Program Analysis and Transformations

(Fall Semester 1999)

Overview of the Topics

This course is a revision of a previous course, CISC 879, Optimizing and Parallelizing Compilers. In this course, we will together investigate the issues that researchers and developers of software tools, optimizing compilers, and automatic parallelizers need to address. We will study some of the current approaches to dealing with these problems, and critically analyze their effectiveness.

Some of the issues/problems that we will study are:

What kind of information about a program is useful in the design of compiler optimization, automatic parallelization, debuggers, software testing tools, program maintenance, program understanding aids, and programming environments for helping programmers in the software development process?

How can this information be derived automatically from analysis of a program code?

What kinds of representations of the program are most useful for different kinds of analysis? What are the tradeoffs of these representations?

What are the limits of gathering information about programs without running the program?

How can information about past runs of a program be used in the analysis of a program?

What kinds of transformations can be performed on a program automatically to improve the performance of the executing code?

What level of program representation is most amenable to the analysis involved in determining when a transformation will preserve the original program semantics and also increase the run-time performance?

How do various program features affect the ability to analyze programs automatically? What kinds of techniques have been developed to try to handle these features? The course will be run as a seminar course, with minilectures, group discussions, a small project with an existing compiler/program analysis infrastructure, and written presentation.

Course Catalog Description

CISC 872: Advanced Program Analysis and Transformations 3 credits

Static program analysis and machine-independent code transformations. Topics include control flow analysis, intraprocedural and interprocedural data flow analysis, alias analysis, advanced program representations including SSA and PDG, and local, global, and interprocedural analysis for classic code-improving transformations.

Prerequisite: CISC672 or an undergraduate course in compilers or permission of instructor
Restrictions: Undergraduates must obtain instructor's permission.