gdfa: A Generic Data Flow Analyzer for GCC

The design and implementation of gdfa is motivated by the following objectives:

  1. Demonstrating the practical significance of the following important generalization:

    Instead of implementing specific analyses directly, it is useful to implement a generic driver that is based on a carefully chosen set of abstractions. The task of implementing a particular analyzer then reduces to merely specifying the analysis by instantiating these abstractions to concrete values.

  2. Providing an easy to use and easy to extend data flow analysis infrastructure. The goal is to facilitate experimentation in terms of studying existing analyses, defining new analyses, and exploring different analysis algorithms.

Installing gdfa

A short guide to applying the patch, building GCC with gdfa, and testing gdfa can be found here.


gdfa-1.4 (for gcc 4.5.0)

gdfa-1.3 (for gcc 4.3.0)

gdfa-1.2 (for gcc 4.3.0)

gdfa-1.1 (for gcc 4.3.0)

gdfa-1.0 (for gcc 4.3.0)


Above code is tested with the following system configuration:

Source Code

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


The documentation of gdfa is distributed under GNU FDL v 1.2 or later.

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

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