A very good thesis

dufrp@oricom.ca dufrp@oricom.ca
Sun, 31 Jan 1999 03:21:00 -0500 (EST)

Optimizing Compilers for Structured Programming Languages:

year         : 1995
title        : Optimizing Compilers for Structured Programming Languages
author       : Marc M. Brandis
school       : ETH Zürich
address      : Institute of Computer Systems
abstract     :
Modern processor architectures rely on optimizing  compilers  to  achieve  high
performance.  Such  architectures  expose  details  of  their  hardware  to the
compiler, which has  to  deal  with  them  in  generating  machine  code.  This
development  has  led  to  complex  and  slow compilers, which are difficult to
understand, implement, and maintain.
    This thesis reports on methods to simultaneously reduce the complexity  and
the  compile-time  of  optimizing  compilers  by  more  than a decimal order of
magnitude. It presents  a  novel  intermediate  program  representation,  which
integrates  data-  and control-flow into a single data-structure. This provides
not just for simpler and faster optimization  algorithms,  but  also  for  more
powerful   optimization  techniques.  The  thesis  also  describes  single-pass
algorithms  to  construct  this  intermediate   program   representation   from
structured source code, as well as single-pass techniques to transform programs
with  restricted  kinds  of  unstructured  control-flow  like  in  Oberon  into
structured  form. The integration of these techniques with the parser allows to
implement fast and compact front-ends  for  structured  programming  languages,
that  avoid  the  many  auxiliary  data  structures  other optimizing compilers
    A description of several  optimization  algorithms  and  how  they  can  be
implemented  on  this intermediate program representation shows the feasibility
of  the  approach.  Most  of  these  techniques  have  been  implemented  in  a
prototypical  optimizing  compiler  translating  a  subset  of  the programming
language Oberon for the PowerPC architecture.  Measurements  on  this  compiler
prove that both the complexity and the compile-time of optimizing compilers can
be reduced by an order of magnitude when translating a  structured  programming
language  and  when  using  this  novel  intermediate  representation  and  the
associated  algorithms.  The  thesis  concludes  with  some  feedback  to   the
programming   language   designers,   which  language  constructs  cause  undue
complications in optimizing compilers and should therefore be omitted.