Speaker: Radu Rugina
Affiliation: MIT
Date: 4/10/01
Time and Location: 4:15 PM, B11 Kimball Hall
Program Analysis Techniques for Pointers and Accessed Memory Regions

Virtually all program transformations and safety checks require information about the memory locations accessed by the statements and procedures in the program. But many constructs in modern programming languages (for example, pointers, object references, recursion, and multiple threads) make it difficult to obtain this kind of information. 

This talk presents two new static analysis techniques, a pointer analysis and a symbolic bounds analysis, that precisely characterize how the program accesses memory. Pointer analysis computes where pointer variables may point during the execution of the program. The symbolic bounds analysis characterizes how the program accesses regions within dynamically allocated blocks of memory. Both techniques can successfully analyze recursive and multithreaded programs that heavily use pointers.

Experimental results from our implemented program analysis system show that these techniques enable a wide range of further analyses, transformations, and safety checks, including race detection, detection of bounds violations for dynamically allocated regions of memory, elimination of array bounds checks, and automatic parallelization.