MILEPOST GCC with Interactive Compilation Interface

MILEPOST GCC is an open collaborative plugin infrastructure intended to transform popular, stable, production-quality GCC into a powerful R&D tool. MILEPOST GCC is composed of the Interactive Compilation Interface and a static program feature extractor.The Interactive Compilation Interface (or 'ICI' for short) is a plugin system with a high-level compiler-independent and low-level compiler-dependent API to transform current compilers into collaborative open modular interactive toolsets. The ICI framework acts as a "middleware" interface between the compiler and the user-definable plugins. It opens up and reuses the production-quality compiler infrastructure to enable program analysis and instrumentation, fine-grain program optimizations, simple prototyping of new development and research ideas while avoiding building new compilation tools from scratch. It is used in multiple research projects to automate program optimization and architecture design space exploration and improve program execution time, code size and compilation time among other important characteristics using empirical, statistical and machine learning techniques. ICI is intended to reduce time to move research prototypes to the real compiler eventually. We are working collaboratively on multiple extensions to include individual optimization pass selection and reordering at function level, generic function cloning, XML representation of the compilation flow, fine-grain optimizations including GRAPHITE pass (in progress), program instrumentation, multi-target compilation, source-to-source transformations among others. We are trying to move ICI developments to mainline GCC 4.5 or 4.6.

A live demo of the MILEPOST GCC to predict profitable optimizations based on program features is available here.