Whole-Array SSA: An Intermediate Representation of Memory for Trading-Off Precision against Complexity

Hans Vandierendonck, Koen De Bosschere. Whole-Array SSA: An Intermediate Representation of Memory for Trading-Off Precision against Complexity. In Florent Bouchez, Sebastian Hack, Eelco Visser, editors, Proceedings of the Workshop on Intermediate Representations. pages 69-76, 2011.

Abstract

Static single assignment (SSA) form is a widely used intermediate representation for scalar dependences. It simplifies the design of many scalar analyses and optimizations and allows them to operate much more efficiently. In contrast, applying the SSA technique to arrays has proved much more difficult. The state-of-the-art techniques try to model array operations at the element level. Region array SSA form uses symbolic memory access descriptors. While these techniques appear to work quite well for Fortran programs, they are inefficient when analyzing general-purpose programs because these programs have quite different properties. By tuning the representation to properties that are deemed important to enable parallelization in these programs, we aim to make program analysis less time-consuming while maintaining precision for our target applications. We support our claims by using our new representation to present a simplified algorithm for privatization analysis. Finally, we demonstrate the benefits of our new representation by using it to parallelize program constructs that are typical for general-purpose programs.