Skip to main content

Designing the McCAT compiler based on a family of structured intermediate representations

  • Conference paper
  • First Online:

Part of the book series: Lecture Notes in Computer Science ((LNCS,volume 757))

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.

Unable to display preview. Download preview PDF.

References

  1. 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.

    Google Scholar 

  2. Zahira Ammarguellat. A control-flow normalization algorithm and its complexity. IEEE transactions on software engineering, 18(3), 1992.

    Google Scholar 

  3. B. Baker. An algorithm for structuring flowgraphs. JACM, 24(1), 1977.

    Google Scholar 

  4. U. Banerjee. Dependence Analysis for Supercomputing, Kluwer Academic Publishers, Boston, Mass., 1988.

    Google Scholar 

  5. 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.

    Google Scholar 

  6. Christopher Donawa. McBurg: A kinder, gentler interface for producing Burg specifications. ACAPS Technical Note 39, McGill University, 1992.

    Google Scholar 

  7. Maryam Emami. An alias analysis for stack-allocated data structures. Master's thesis, McGill University, expected February 1993.

    Google Scholar 

  8. 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.

    Google Scholar 

  9. 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.

    Google Scholar 

  10. 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.

    Google Scholar 

  11. 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.

    Google Scholar 

  12. Laurie J. Hendren. Parallelizing Programs with Recursive Data Structures. PhD thesis, Cornell U., Jan. 1990.

    Google Scholar 

  13. Laurie J. Hendren and Alexandra Nicolau. Parallelizing programs with recursive data structures. IEEE Transactions on Parallel and Distributed Systems, 1(1), Jan. 1990.

    Google Scholar 

  14. 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.

    Google Scholar 

  15. J. L. Hennessy and D. A. Patterson. Computer Architecture: A Quantitative Approach. Morgan Kaufmann Publishers, Inc., 1990.

    Google Scholar 

  16. Ralph E. Johnson and Carl McConnell. The RTL System: A Framework for Code Optimization. Technical report, University of Illinois at Urbana-Champaign, 1991.

    Google Scholar 

  17. 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.

    Google Scholar 

  18. William A. Landi. Interprocedural aliasing in the presence of pointers. PhD thesis, Rutgers University, 1992.

    Google Scholar 

  19. 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.

    Google Scholar 

  20. David S. Rosenblum. A methodology for the design of Ada transformation tools in a DIANA envi ronment. IEEE Software, 1985.

    Google Scholar 

  21. Bhama Sridharan. An analysis framework for the McCAT compiler. Master's thesis, McGill University, September 1992.

    Google Scholar 

  22. 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.

    Google Scholar 

  23. M. H. Williams and H.L. Ossher. Conversion of unstructured flow diagrams to structured. Comput. J., 21(2), 1975.

    Google Scholar 

  24. 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.

    Google Scholar 

  25. Hans Zima and Barbara Chapman. Supercompilers for Parallel and Vector Computers. ACM Press, New York, 1990.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Utpal Banerjee David Gelernter Alex Nicolau David Padua

Rights and permissions

Reprints 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

Publish with us

Policies and ethics