William Landi

Learn More
Static analysis of programs is indispensable to any software tool, environment, or system that requires compile-time information about the semantics of programs. With the emergence of languages like C and LISP, static analysis of programs with dynamic storage and recursive data structures has become a field of active research. Such analysis is difficult,(More)
We present a new interprocedural modification side effects algorithm for C programs, that can discern side effects through general-purpose pointer usage. Ours is the first complete design and implementation of such an algorithm. Preliminary performance findings support the practicality of the technique, which is based on our previous approximation algorithm(More)
Pointer aliasing analysis is crucial to compile-time analyses for languages with general-purpose pointer usage (such as C), but many aliasing methods have proven quite costly. We present a technique that partitions the statements of a program to allow separate, and therefore possibly different, pointer aliasing analysis methods to be used on independent(More)
We present the first high-precision algorithm for obtaining Def-Use Associations in C programs with single level pointers. While the precise solution of the problem is lVP-hani, our polynomial-time algorithm uses program-point-specific pointer-induced aliases to obtain good approximations to the set of definitions reaching a program point. This information(More)
Concrete type-inference for statically typed object-oriented programming languages (e.g., Java, C ++) determines at each program point, those objects to which a reference may refer or a pointer may point during execution. A precise compile-time solution for this problem requires a ow-sensitive analysis. Our new complexity results for concrete type-inference(More)
The first interprocedural modification side-effects analysis for C (MOD<subscrpt><italic>C</italic></subscrpt>) that obtains better than worst-case precision on programs with general-purpose pointer usage is presented with empirical results. The analysis consists of an algorithm schema corresponding to a family of MOD<subscrpt><italic>C</italic></subscrpt>(More)
Recently, there has been an emphasis on analyzing programs in languages with pointers and recursive structures. A principal difficulty in developing these analyses appears to be incorporating the effects of pointer-induced aliasing. Two algorithms for general pointer-induced aliasing have recently been developed [LR92, CBC93]. This report clarifies(More)