Abstract
The effective exploitation of advanced technology for the development of the nextgeneration high-performance computers requires the integrated development of compiler techniques and architectural design. In order to provide a research tool with which we can experiment with both new architectural features and compiler support for those features, we have been developing the McGill Compiler/Architecture Testbed, McCAT.
In this paper we focus on the design of the McCAT compiler. The central theme of the paper is that the design of the family of intermediate representations should be driven by the analyses and transformations that are most important for effective compilation for architectures supporting some level of fine-grain parallelism. A primary objective of our design was to provide a natural way of supporting a framework for alias analysis that is general (handles scalars, arrays and pointers), accurate (provides accurate enough estimates for parallelizing transformations), and pervasive (alias information is available at the lowest level intermediate representation). In addition, we discuss how the design of the intermediate representations was motivated by the desire to support the use and development of analyzer-generator and code-generator generator tools that make the compiler flexible and useful for experimental development.
The work supported in part by FCAR, NSERC, and the McGill Faculty of Graduate Studies and Research.
This is a preview of subscription content, log in via an institution.
Preview
Unable to display preview. Download preview PDF.
References
Alfred A. Aho, Mahadevan Ganapathi, and Steven W. K. Tjiang. Code generation using tree matching and dynamic programming. ACM Transactions on Programming Languages and Systems, 11(4):491–516, 1989.
Zahira Ammarguellat. A control-flow normalization algorithm and its complexity. IEEE transactions on software engineering, 18(3), 1992.
B. Baker. An algorithm for structuring flowgraphs. JACM, 24(1), 1977.
U. Banerjee. Dependence Analysis for Supercomputing, Kluwer Academic Publishers, Boston, Mass., 1988.
Alain Deutsch. A storeless model of aliasing and its abstractions using finite representations of right-regular equivalence relations. In 1992 International Conference on Computer Languages, pages 2–13, April 1992.
Christopher Donawa. McBurg: A kinder, gentler interface for producing Burg specifications. ACAPS Technical Note 39, McGill University, 1992.
Maryam Emami. An alias analysis for stack-allocated data structures. Master's thesis, McGill University, expected February 1993.
Christopher W. Fraser, Robert R. Henry, and Todd A. Proebsting. BURG — Fast Optimal Instruction Selection and Tree Parsing. ACM SIGPLAN Notices, 27(4):68–76, 1992.
Gina Goff, Ken Kennedy, and Chau-Wen Tseng. Practical Dependence Testing. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 15–29, June 1991.
L. J. Hendren, C. Donawa, M. Emami, G. Gao, J. Justiani, and B Sridharan. Designing the McCAT compiler based on a family of structured intermediate representations. ACAPS Technical Memo 46, McGill University, August 1992.
L. J. Hendren, J. Hummel, and A. Nicolau. Abstractions for recursive pointer data structures: Improving the analysis and transformation of imperative programs. In Proc. of the SIGPLAN '92 Conf. on Programming Language Design and Implementation, pages 249–260, San Francisco, Calif., Jun. 17–19, 1992. ACM SIGPLAN. Also in SIGPLAN Notices, 27(7), Jul. 1992.
Laurie J. Hendren. Parallelizing Programs with Recursive Data Structures. PhD thesis, Cornell U., Jan. 1990.
Laurie J. Hendren and Alexandra Nicolau. Parallelizing programs with recursive data structures. IEEE Transactions on Parallel and Distributed Systems, 1(1), Jan. 1990.
L.J. Hendren, G. R. Gao, E. R. Altman, and C. Mukerji. A register allocation framework based on hierarchical cyclic interval graphs. Lecture Notes in Computer Science, 641:176–191, 1992.
J. L. Hennessy and D. A. Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, Inc., 1990.
Ralph E. Johnson and Carl McConnell. The RTL System: A Framework for Code Optimization. Technical report, University of Illinois at Urbana-Champaign, 1991.
William Landi and Barbara G. Ryder. A safe approximate algorithm for interprocedural pointer aliasing. In Proceedings of the 1992 ACM Symposium on Programming Language Design and Implementation, pages 235–248, 1992.
William A. Landi. Interprocedural aliasing in the presence of pointers. PhD thesis, Rutgers University, 1992.
D. E. Maydan, John L. Hennessy, and Monica S. Lam. Efficient and Exact Data Dependence Analysis. In Proceedings of the ACM SIGPLAN Conference on Programming Language Design and Implementation, pages 1–14, June 1991.
David S. Rosenblum. A methodology for the design of Ada transformation tools in a DIANA envi ronment. IEEE Software, 1985.
Bhama Sridharan. An analysis framework for the McCAT compiler. Master's thesis, McGill University, September 1992.
Steven W.K. Tjiang, Micheal E. Wolf, Monica S. Lam, Karen L. Pieper, and John L. Hennessy. Integrating Scalar Optimization and Parallelization. Technical report, Stanford University, 1991.
M. H. Williams and H.L. Ossher. Conversion of unstructured flow diagrams to structured. Comput. J., 21(2), 1975.
Michael J. Wolfe. Optimizing Supercompilers for Supercomputers. Pitman, London and MIT Press, Cambridge, MA, 1989. In the series, Research Monographs in Parallel and Distributed Computing. Revised version of the author's Ph.D. dissertation, Published as Technical Report UIUCDCS-R-82-1105, University of Illinois at Urbana-Champaign, 1982.
Hans Zima and Barbara Chapman. Supercompilers for Parallel and Vector Computers. ACM Press, New York, 1990.
Author information
Authors and Affiliations
Editor information
Rights and permissions
Copyright information
© 1993 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Hendren, L., Donawa, C., Emami, M., Gao, G., Justiani, Sridharan, B. (1993). Designing the McCAT compiler based on a family of structured intermediate representations. In: Banerjee, U., Gelernter, D., Nicolau, A., Padua, D. (eds) Languages and Compilers for Parallel Computing. LCPC 1992. Lecture Notes in Computer Science, vol 757. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-57502-2_61
Download citation
DOI: https://doi.org/10.1007/3-540-57502-2_61
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-57502-3
Online ISBN: 978-3-540-48201-7
eBook Packages: Springer Book Archive