PROMISE (PROgram MorphIng extenSible Environment) is a machine-independent optimizing environment.

PROMISE is intended to be used as a separate optimizing phase of a compiler or as an environment to build custom optimisations. We are also going to provide a decompiling tool that will allow to use any C compiler for generating code, optimised by PROMISE.

The idea of building such an environment arose from embedded system development, where the lack of a good optimising compiler is crucial.

There are several environments, such as SUIF and VPO that provide similar abilities.

In contrast to them PROMISE was originated as an industrial product, not a research project. This means that stability and ease of use and maintenance are especially focused.

Currently the following optimizations are implemented:

  • Constant propagation, including interprocedural
  • Intraprocedural dead code elimination
  • Intraprocedural common subexpression elimination
  • Branch optimisation
  • Very flexible inlining
  • Call elimination
  • Statics overlaying and statics elimination
  • Additionaly transformation to SSA form is implemented.

    PROMISE is written in C++ using templates and is portable. Current version could be built both under Unix (Linux, Solaris) and Windows with either gcc or MS Visual Studio 6.x or 7.

    As a frontend and backend to PROMISE the lcc compiler is used. We had to patch lcc a little to provide more information to PROMISE.

    Since there is a number of good optimizing compilers for general-purpose OS and targets (GNU gcc, Intel icc, SUN Forte etc.) we do not consider PROMISE as an optimizer for general-purpose platforms and software. It could be used though in embedded-systems development both 'as is' and as environment for implementation of special-purpose transformations including machine-dependent ones.

    More in this section:

  • Availability - evaluation options and conditions.
  • Command-line reference - a short command-line options description and installation notes.

  • back

    Copyright © OOPS Team