I am currently working on a new abstract layer in GCC.
The idea was born with the need to have a simple yet powerful way to change compilation decision in GCC.
The layer will also enable things such as:
- simple way to represent dependencies inside GCC or
- generic walkers, iterators or even pretty-printers.
In its essence it should be a generic and simple way to access all the important GCC compilation data.

In the core of this layer (GDL) contains a tree data-structure (GDL structure) in which every leaf of this tree should point to the GCC data it represents.
Every node in GDL is typed and for each of this types a different walker, update and iterator functions are defined.
With this functions the user can export and import data without knowing anything of all the GCC data structures.
All the GDL is being developed using Object-Oriented techniques in C simplifying code maintenance and further improvements.

For a more detailed view of what is meant to be done please take a look at the class diagram in the next link:
http://www-rocq.inria.fr/~pouchet/GDL_diagram.pdf