Newsletter Downloads
Incremental computation of dominator trees
Data flow analysis based on an incremental approach may require that the dominator tree be correctly maintained at all times. Previous solutions to the problem of incrementally maintaining dominator trees were restricted to reducible flowgraphs. In this ...
A correspondence between continuation passing style and static single assignment form
We define syntactic transformations that convert continuation passing style (CPS) programs into static single assignment form (SSA) and vice versa. Some CPS programs cannot be converted to SSA, but these are not produced by the usual CPS transformation. ...
GURRR: a global unified resource requirements representation
When compiling for instruction level parallelism (ILP), the integration of the optimization phases can lead to an improvement in the quality of code generated. However, since several different representations of a program are used in the various phases, ...
A simple graph-based intermediate representation
We present a graph-based intermediate representation (IR) with simple semantics and a low-memory-cost C++ implementation. The IR uses a directed graph with labeled vertices and ordered inputs but unordered outputs. Vertices are labeled with opcodes, ...
Optimizing sparse representations for dataflow analysis
Sparse program representations allow inter-statement dependences to be represented explicitly, enabling dataflow analyzers to restrict the propagation of information to paths where it could potentially affect the dataflow solution. This paper describes ...
Sparse functional stores for imperative programs
In recent years, the trend in program representations for imperative programs has been to make them more functional, or to make them more sparse. However, new sparse representations have been non-functional, and new functional representations have not ...
XIL and YIL: the intermediate languages of TOBEY
Typically, the choice of intermediate representation by a particular compiler implementation seeks to address a specific goal. The intermediate language of the TOBEY compilers, XIL, was initially chosen to facilitate the production of highly optimal ...
GC: the data-flow graph format of synchronous programming
Based on an abstraction of the time as a discrete logical time, the synchronous languages, armed with a strong semantics, enable the design of safe real-time applications. Some of them are of imperative style, while others are declarative. Academic and ...
Rationalized three instruction machine
The declarative nature of functional programming languages causes many difficulties in their efficient implementation on conventional machines. The problem is much harder when the language has non-strict (lazy) semantics. Abstract machines serve as an ...
Verification of ANDF components
This paper presents validation work done on ANDF at the Open Software Foundation Research Institute. The ultimate ANDF scenario splits a compiler into two separate components (producer/installer). This changes the compiler validation process as the two ...
Java intermediate bytecodes: ACM SIGPLAN workshop on intermediate representations (IR'95)
Java is a programming language loosely related to C++. Java originated in a project to produce a software development environment for small distributed embedded systems. Programs needed to be small, fast, “safe” and portable. These needs led to a design ...