University of Alberta
CMPUT 605-JIT 
ADVANCED TOPICS IN COMPILERS: ON-DEMAND CONTEXT-SENSITIVE POINTER ANALYSIS

Department of Computing Science 
University of Alberta 

Revised December 09, 2008

Winter 2009

TIME: TR 1400-1520
INSTRUCTOR: José Nelson Amaral
 

Calendar Description:   Study the issues involved with the implementation of modular context-sensitive, flow-sensitive, and inclusion-based inter-procedural pointer analysis in an industrial-strength compiler infrastructure.

Course Description and Goals:

There is a vast literature describing many flavors of pointer and reference analysis. However no one has described an interprocedural analysis for the the C programming language that is at the same time flow sensitive, context sensitive, field sensitive, and inclusion based. There are several reasons that prevent the development of such an analysis: field-sensitivity is harder to implement in C than in Java because C allows the address of an structure field to be taken and manipulated in arbitrary ways. Full context-sensitivity may result in unwieldy spatial and temporal complexity when applied to large pointer-rich programs.

A recent trend in pointer and reference analysis is to limit the scope of the analysis by selecting a subset of variables in the program for which we demand accurate points-to information. Such analyses are called on-demand or incremental. The idea is that variables that are referenced in portions of the program that are candidates for potentially highly profitable code transformations should be analysed with more care to create more opportunities for such tranformations. For instance, variables that are referenced in loops that are candidates for auto-parallelization should be analysed more precisely than variables that are only referenced outside of loops.

The goal of this course is to study the recent literature on on-demand interprocedural pointer analysis and to discover the requirements to engineer an on-demand interprocedural analysis for a commercial compiler. At the end of the course the student should not only understand the trade-offs that must be negotiated in the implementation of such an analysis, but must also be able to propose a plausible set of algorithms and data structures that would be necessary to implement such an analysis framework in an industry-grade compiler.


Grading:

Class Presentations        30%
Homeworks                    20%
Practical Experiments    20%
Final Paper                      30%


Course Plan:

Literature:


[University of Alberta]
University of Alberta
[Department of Computing Science]
Computing Science