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)

  • Download Patch
  • Documentation
  • Features: Support for Reaching definition analysis is added to Generic Bit Vector Data Flow Analyzer
  • Miscellaneous Bug Fixes

gdfa-1.0 (for gcc 4.3.0)

  • Download Patch
  • Documentation
  • Features: Generic Bit Vector Data Flow Analyzer for Gimple IR with example instantiations for several bit vector frameworks. This data flow analyzer is an intraprocedural (i.e. "per function") analyzer and hence restricts itself to local variables and expressions. Following data flow analysis problems are implemented:
    1. Available expressions analysis (ave)
    2. Partially available expressions analysis (pav)
    3. Anticipable expressions analysis (ant)
    4. Live variables analysis (lv)
    5. Partial redundancy elimination (pre)


Above code is tested with the following system configuration:

  • Operating System: Ubuntu 9.10 Karmic Release
  • Native compiler: Gnu Compiler collection (GCC) 4.x

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.

Tested on Firefox version 3.0.8 and above     |    Site designed and maintained by GRC    |    © 2013, GCC Resource Center