ADVANCED TOPICS IN COMPILERS: ON-DEMAND CONTEXT-SENSITIVE POINTER ANALYSIS
Department of Computing Science |
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 |
Computing Science |