This thesis describes a complete compiler back-end for lazy functional languages, which uses various interprocedural optimisations to produce highly optimised code. The most important contributions of this work are the following. A novel intermediate language, called GRIN (Graph Reduction Intermediate Notation), around which the first part of the back-end is built. The GRIN language has a very "functional flavour", making it well suited for analysis and program transformation, but at the same time provides the "low level" machinery needed to express many concrete implementation details. We apply a program-wide control flow analysis, also called a heap points-to analysis, to the GRIN program. The result of the analysis is used to eliminate u...
A substantial amount of work has been devoted to the proof of correctness of various program analyse...
this paper, we emphasize the practicality of lazy code motion by giving explicit directions for its ...
Every compiler passes code through several stages, each a sort of mini- compiler of its own. Thus...
INST: L_042GRIN is short for Graph Reduction Intermediate Notation, a modern back end for lazy funct...
The aim of the FAST Project is to provide an implementation of a functional language, Haskell, on a ...
AbstractIn this paper we present a new programming technique for lazy functional programming languag...
Lazy functional languages such as LML [4], Haskell [21], and Concurrent Clean [35] typically feature...
Automatic memory management is an important concept in many high order languages. It improves produc...
In this paper we present a new programming technique for lazy functional programming languages. The ...
In this thesis we present and analyse a set of automatic source-to-source program transformations th...
Common subexpression elimination is a well-known compiler optimisation that saves time by avoiding t...
Six implementations of different lazy functional languages are compared using a common benchmark of ...
Five implementations of different lazy functional languages are compared using a common benchmark of...
Abstract. Common subexpression elimination is a well-known compiler optimisation that saves time by ...
The FCGcode generator produces portable code that supports efficient two-space copying garbage colle...
A substantial amount of work has been devoted to the proof of correctness of various program analyse...
this paper, we emphasize the practicality of lazy code motion by giving explicit directions for its ...
Every compiler passes code through several stages, each a sort of mini- compiler of its own. Thus...
INST: L_042GRIN is short for Graph Reduction Intermediate Notation, a modern back end for lazy funct...
The aim of the FAST Project is to provide an implementation of a functional language, Haskell, on a ...
AbstractIn this paper we present a new programming technique for lazy functional programming languag...
Lazy functional languages such as LML [4], Haskell [21], and Concurrent Clean [35] typically feature...
Automatic memory management is an important concept in many high order languages. It improves produc...
In this paper we present a new programming technique for lazy functional programming languages. The ...
In this thesis we present and analyse a set of automatic source-to-source program transformations th...
Common subexpression elimination is a well-known compiler optimisation that saves time by avoiding t...
Six implementations of different lazy functional languages are compared using a common benchmark of ...
Five implementations of different lazy functional languages are compared using a common benchmark of...
Abstract. Common subexpression elimination is a well-known compiler optimisation that saves time by ...
The FCGcode generator produces portable code that supports efficient two-space copying garbage colle...
A substantial amount of work has been devoted to the proof of correctness of various program analyse...
this paper, we emphasize the practicality of lazy code motion by giving explicit directions for its ...
Every compiler passes code through several stages, each a sort of mini- compiler of its own. Thus...