Efficient SSI Conversion
André Tavares, Fernando Magno Pereira, Mariza Bigonha and Roberto Bigonha

Abstract:

Static Single Information form (SSI) is a program representation that enables optimizations such as array bound checking elimination and conditional constant propagation. Transforming a program into SSI form has a non-negligible impact on compilation time; but, only a few SSI clients, that is, optimizations that use SSI, require a full conversion. This paper describes the SSI framework we have implemented for the LLVM compiler, and that is now part of this compiler's standard distribution. In our design, optimizing passes inform the compiler a list of variables of interest, which are then transformed to present, fully or partially, the SSI properties. It is provided to each client only the subset of SSI that the client needs. Our implementation orchestrates the execution of clients in sequence, avoiding redundant work when two clients request the conversion of the same variable. As empirically demonstrated, in the context of an industrial strength compiler, our approach saves compilation time and keeps the program representation small, while enabling a vast array of code optimizations.

Published:

"Efficient SSI Conversion"
André Tavares and Fernando Magno Pereira and Mariza Bigonha and Roberto Bigonha
In Proceedings of the 14th Brazilian Symposium on Programming Languages, Salvador, Brazil, September 2010.

Download:

Paper:

BibTeX Entry:

@INPROCEEDINGS{x:2010,
 AUTHOR="André Tavares and Fernando Magno Pereira and Mariza Bigonha and
  Roberto Bigonha",
 TITLE="Efficient SSI Conversion",
 BOOKTITLE="SBLP 2010",
 ADDRESS="",
 DAYS="27-29",
 MONTH="sep",
 YEAR="2010",
 ABSTRACT="Static Single Information form (SSI) is a program
  representation that enables optimizations such as array bound checking
  elimination and conditional constant propagation. Transforming a program
  into SSI form has a non-negligible impact on compilation time; but, only
  a few SSI clients, that is, optimizations that use SSI, require a full
  conversion. This paper describes the SSI framework we have implemented
  for the LLVM compiler, and that is now part of this compiler's standard
  distribution.In our design, optimizing passes inform the compiler a list
  of variables of interest, which are then transformed to present, fully
  or partially, the SSI properties. It is provided to each client only the
  subset of SSI that the client needs. Our implementation orchestrates the
  execution of clients in sequence, avoiding redundant work when two
  clients request the conversion of the same variable. As empirically
  demonstrated, in the context of an industrial strength compiler, our
  approach saves compilation time and keeps the program representation
  small, while enabling a vast array of code optimizations.",
 KEYWORDS="Program transformations; Program analysis and verification;
  Compilation and interpretation techniques",
 URL="http://llvm.org/pubs/2010-08-SBLP-SSI.pdf",
 }

Valid CSS! Valid HTML 4.01!