Data and Process Abstraction in PIPS Internal Representation

Fabien Coelho, Pierre Jouvelot, Corinne Ancourt, François Irigoin. Data and Process Abstraction in PIPS Internal Representation. In Florent Bouchez, Sebastian Hack, Eelco Visser, editors, Proceedings of the Workshop on Intermediate Representations. pages 77-84, 2011.


PIPS, a state-of-the-art, source-to-source compilation and optimization platform, has been under development at MINES ParisTech since 1988, and its development is still running strong. Although initially designed to perform automatic interprocedural parallelization of Fortran 77 programs, PIPS has been extended over the years to compile HPF (High Performance Fortran), C and Fortran 95 programs. Written in C, the PIPS framework has shown to be surprisingly resilient, and its analysis and transformation phases have been reused, adapted and extended to new targets, such as generating code for special purpose hardware accelerators, without requiring significant re-engineering of its core structure. We suggest that one of the key features that explain this adaptability is the PIPS abstract syntax tree-oriented internal representation (IR). Although fit for source-to-source processing, PIPS IR emphasized from its origins the use of maximum abstraction over target languages’ specificities and generic data structure manipulation services via the Newgen Domain Specific Language, which provides key features such as type building, automatic serialization and powerful iterators. Although the state of software technology has significantly advanced over the last 20 years and many of the pioneering features introduced by Newgen are nowadays present in modern programming frameworks, we believe that the methodology used to design PIPS IR, and presented in this paper, remains relevant today and could be put to good use in future compilation platform development projects.