Machine-independent optimization
A global optimizer is a key and necessary component
of a high-performance compiler.
Vpo
has been used to build several high-quality
compilers and other program transformation and analysis tools.
Vpo uses a paradigm of compilation that has
proven to be flexible and adaptable---all code improving transformations
are performed on a target-specific representation of the program
as register-transfer lists (RTLs).
When compiling a program,
vpo attempts all possible improvements; improvements are inhibited
dynamically only when their results cannot be expressed as
instructions on the target machine.
Aggressive use of this paradigm yields several
valuable properties.
- Vpo is language- and compiler-independent.
For example, it has been used with several C front ends, each of
which generates a different intermediate language.
-
Because all
code improvements are applied to a single low-level intermediate
representation, phase ordering problems are
minimized.
-
Vpo is
easily retargeted and handles a wide variety of architectures.
- Because of its flexible structure,
vpo has several other interesting uses in addition to its primary use
in an optimizing compiler.
To connect your compiler to Vpo, consult the code-generation interfaces.
You can also
read an article about vpo's design (200K) or get the software.
Back to Zephyr home page
This document is designed to be viewed using Cascading Style Sheets. If you
can see this text, your browser does not support them.
Please consider upgrading to Netscape 4, to Internet Explorer
3 or 4, or one of the other browsers recommended by the
W3 Consortium.