Abstract
Several parallelizing or general-purpose compilers have been using intermediate representations based on some form of single-assignment. Extending these representations to arrays has been done in two ways: Array SA, and Array SSA, the extension of the widely-used Static Single Assignment (SSA). We formally define and compare Array SA and Array SSA, and show that (1) They both need instance-wise reaching-definition analyses to (a) be streamlined and (b) allow a parallelizing compiler to choose the most appropriate form, (2) The “same name - same value” property holds for Array SSA in a restricted way only.
This is a preview of subscription content, log in via an institution.
Buying options
Tax calculation will be finalised at checkout
Purchases are for personal use only
Learn about institutional subscriptionsPreview
Unable to display preview. Download preview PDF.
References
A. V. Aho, R. Sethi, and J. D. Ullman. Compilers: Principles, Techniques and Tools. Addison-Wesley, Reading, Mass, 1986.
B. Alpern, M. N. Wegman, and F. K. Zadeck. Detecting equality of variables in programs. In ACM Symp. on Principles of Programming Languages (PoPL), pages 1–11, January 1988.
B. S. Baker. An algorithm for structuring programs. J. of the ACM, 24:98–120, 1977.
D. Barthou. Array Dataflow Analysis in Presence of Non-affine Constraints. PhD thesis, Univ. Versailles, February 1998.
D. Barthou, A. Cohen, and J.-F. Collard. Maximal static expansion. In ACM Symp. on Principles of Programming Languages (PoPL), pages 98–106, San Diego, CA, January 1998.
R. Bodĺk and S. Anik. Path-sensitive value-flow analysis. In ACM Symp. on Principles of Programming Languages (PoPL), pages 237–251, San Diego, CA, January 1998.
R. Bodĺk and R. Gupta. Partial dead code elimination using slicing transformations. In ACM SIGPLAN Conf on Prog. Lang. Design and Implem. (PLDI), pages 159–170, Las Vegas, Nevada, January 1997.
M. M. Brandis and H. Mssenbck. Single-pass generation of static single-assignment form for structured languages. ACM Trans. on Prog. Languages and Systems, 16(6):1684–1698, November 1994.
F. Chow, S. Chan, R. Kennedy, S.-M. Liu, R. Lo, and P. Tu. A new algorithm for partial redundancy elimination based on ssa form. In ACM SIGPLAN Conf on Prog. Lang. Design and Implem. (PLDI), pages 273–286, Las Vegas, Nevada, June 1997.
F. Chow, S. Chan, S.-M. Liu, R. Lo, and M. Streich. Effective representation of aliases and indirect memory operations in ssa form. In Int. Conf on Compiler Construction (CC’96), pages 253–267, 1996.
J.-F. Collard. Array SSA: Why? how? how much? Technical report, PRISM, U. of Versailles, 1998.
J.-F. Collard, D. Barthou, and P. Feautrier. Fuzzy array dataflow analysis. In ACM SIGPLAN Symp. on Principles and Practive of Parallel Prog. (PPoPP), pages 92–102, Santa Barbara, CA, July 1995.
J.-F. Collard and J. Knoop. A comparative study of reaching definitions analyses. Technical Report 1998/22, PRISM, U. of Versailles, 1998.
E. Duesterwald, R. Gupta, and M.-L. Soffa. A practical data flow framework for array reference analysis and its use in optimization. In ACM SIGPLAN’93 Conf. on Prog. Lang. Design and Implementation, pages 68–77, June 1993.
P. Feautrier. Array expansion. In ACM Int. Conf. on Supercomputing, St Malo, pages 429–441, 1988.
P. Feautrier. Dataflow analysis of scalar and array references. Int. Journal of Parallel Programming, 20(1):23–53, February 1991.
M. Griebl and J.-F. Collard. Generation of synchronous code for automatic parallelization of while loops. In S. Haridi, K. Ali, and P. Magnusson, editors, EUROPAR’ 95, Lecture Notes in Computer Science 966, pages 315–326. Springer-Verlag, 1995.
K. Knobe and V. Sarkar. Array SSA form and its use in parallelization. In ACM Symp. on Principles of Programming Languages (PoPL), pages 107–120, San Diego (CA), January 1998.
J. Knoop, O. Rüthing, and B. Steffen. Code motion and code placement: Just synonyms? In Proceedings of the 7th European Symposium on Programming (ESOP’98), volume 1381, pages 154–169, Lisbon, Portugal, May 1998.
C. Lapkowski and L. J. Hendren. Extended SSA numbering: Introducing SSA properties to languages with multi-level pointers. In K. Koskimies, editor, Compiler Construction CC’98, volume 1383 of LNCS, pages 128–143, Lisbon, Portugal, March 1998. Springer-Verlag.
B. K. Rosen, M. N. Wegman, and F. K. Zadeck. Global value numbers and redundant computations. In ACM Symp. on Principles of Programming Languages (PoPL), pages 12–27, 1988.
A. V. S. Sastry and R. D. C. Ju. A new algorithm for scalar register promotion based on SSA form. In ACM SIGPLAN Conf on Prog. Lang. Design and Implem. (PLDI), pages 15–25, Montreal, Canada, June 1998.
P. Tu and D. Padua. Automatic array privatization. In Proc. Sixth Workshop on Languages and Compilers for Parallel Computing, number 768 in Lecture Notes in Computer Science, pages 500–521, August 1993. Portland, Oregon.
P. Tu and D. Padua. Gated SSA-Based demand-driven symbolic analysis for parallelizing compilers. In ACM Int. Conf. on Supercomputing, pages 414–423, Barcelona, Spain, July 1995.
D. G. Wonnacott. Constraint-Based Array Dependence Analysis. PhD thesis, University of Maryland, 1995.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 1999 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Collard, JF. (1999). The Advantages of Instance-Wise Reaching Definition Analyses in Array (S)SA. In: Chatterjee, S., et al. Languages and Compilers for Parallel Computing. LCPC 1998. Lecture Notes in Computer Science, vol 1656. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-48319-5_22
Download citation
DOI: https://doi.org/10.1007/3-540-48319-5_22
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-66426-0
Online ISBN: 978-3-540-48319-9
eBook Packages: Springer Book Archive