PROMIS Release announcement

The PROMIS compiler project from the University of Illinois at Urbana-Champaign is a compiler framework that can be easily reconfigured to optimize for various system configurations, from embedded processors to clusters of workstations.The cornerstone of the PROMIS compiler is its universal internal representation that is used to maintain and propagate analysis information from the front-end analysis passes all the way to the back-end passes.Additionally, the IR incorporates a hierarchical model of the program, which we use to express parallel task information for hierarchical and parallel systems.The PROMIS system is ideal for researchers looking to develop new analyses and optimizations with minimal duplication of effort.The extensibility of PROMIS allows researchers to add their own modules into our source base.

Frontends:

C, Fortran, Java (under development)

Backends:

X86, MIPS (under development), BOPS

A library of standard optimizations

function inlining

dead code elimination

loop transformations: unrolling, invariant code motion, interchange, distribution, fusion, peeling, normalization

constant folding / constant propagation

copy propagation

symbolic optimizations: fixed iteration loop recognition, induction variable optimizations, loop invariant code motion 
 

Available Analysis Information:

subscript analysis

interprocedural symbolic analysis 

control flow graph

dominator and post dominator information 

control dependence graph 

data dependence graph
 

Parallelization

privatization, reduction

execution conditions

instruments parallel code to work with the Illinois-Intel Multithreading Library (IML)
 

Fully extensible

Can add new types, expressions, instructions

Can attach new fields to existing structures and adding new analysis types

machine description driven retargetable compilation
 

Development Tools

Graphical Representation of the IR for debugging

A regression suite
 

In Development:

general data flow framework

common subexpression elimination

multigrain multithreaded code generation