lipta: Lazy Interprocedural Points-to Analysis for GCC 4.6.0

Flow- and context-sensitive pointer analysis is considered prohibitively expensive and most methods relax one or both of the requirements for scalability. lipta is a flow- and context-sensitive points-to analysis implemented in GCC-4.6.0. It has the following features:

Installing lipta

A short guide to applying the patch, building gcc-4.6.0 with lipta, and testing lipta can be found here.

The performance of lipta can be contrasted against a full flow- and context-sensitive pointer analysis implementation, ipta, which also effectively uses the value- based termination of call strings for interprocedural analysis, but does not perform liveness pass to find the live ranges of pointers. It is installed using the same steps as needed for lipta, and the steps can be found here.

Empirical Measurements

The empirical measurements and observations for testing our implementation on SPEC CPU2006 and SPEC2000 benchmarks can be found here.

Releases

lipta-1.0 (for gcc 4.6.0)

ipta-1.0 (for gcc 4.6.0)

Prerequisites

Above code is tested with the following system configuration:

Source Code

The source code of lipta is distributed under GNU GPL v 2.0 or later.

For more details on data flow analysis, please refer to the book Data Flow Analysis: Theory and Practice

The Copyright of lipta code is held by the GCC Resource Center of Department of Computer Science and Engineering, Indian Institute of Technology Bombay.