Downloads


Caisson Compiler

The Caisson compiler implementation for our PLDI'11 paper. Written in Scala.


Staged Flow-Sensitive Pointer Analysis

An implementation of the analysis described in our CGO'11 paper. As always, this code is a research prototype and is not production quality. It is presented in the hope that someone may find it useful to examine an implementation of the analysis. The code is here.


Semi-Sparse Flow-Sensitive Pointer Analysis

A whole-program, field-sensitive, flow-sensitive, context-insensitive pointer analysis implemented in LLVM, as described in the POPL'09 paper. The code isn't really 'release-quality', but is presented here for anyone who is interested in seeing an implementation.

Here is a slightly newer version, still very much not release quality--caveat emptor. This README file may help.


Inclusion-Based Pointer Analysis using LLVM

A whole-program, field-sensitive inclusion-based pointer analysis using the LLVM compiler infrastructure. This implementation is an improved version of the code that was used for the PLDI'07 and SAS'07 papers, though it only includes our own algorithms and not the baseline implementations used for comparison in those papers.


Code from PLDI'07 and SAS'07

The source code and benchmarks used for the PLDI'07 paper The Ant and the Grasshopper: Fast and Accurate Pointer Analysis for Millions of Lines of Code and the SAS'07 paper Exploiting Pointer and Location Equivalence to Optimize Pointer Analysis.

The source code package contains public domain implementations of a number of different inclusion-based (i.e. Andersen-style) pointer analysis algorithms along with various optimizations. The code is in C++ and has been tested on the Ubuntu Linux distribution. To support profiling, we link to libraries from the Google Performance Tools. Some algorithms use BDDs and require the BuDDy Binary Decision Diagram Package.