Parameter-Induced Aliasing in Ada

  • Wolfgang Gellerich
  • Erhard Plödereder
Conference paper
Part of the Lecture Notes in Computer Science book series (LNCS, volume 2043)


Parameter-induced aliasing means that overlapping areas of memory are associated with different identifiers causing assignments to one of them to have the unexpected effect of also changing the other’s value. The disadvantages of aliasing for most aspects of programming languages have been known for decades and it is reported that aliasing occurs quite often when programming in languages like C or Fortran. In contrast, our examination of 173 MB real-world Ada code with a total of 93690 subprogram calls revealed less than one alias pair per 10000 lines of code. Further code inspection showed that most alias pairs could have been avoided. The rare occurrence of aliasing may be one reason for the low error rate frequently reported for Ada programs. This paper presents the methods and results of our analysis. Further, it discusses two approaches to forbid aliasing by language rules and evaluates the usability of our alias-free “named container” model suggested earlier.


Level Number Index Expression Language Rule Program Language Design Parameter Passing 
These keywords were added by machine and not by the authors. This process is experimental and the keywords may be updated as the learning algorithm improves.


Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.


  1. [Ack82]
    W.B. Ackerman. Data Flow Languages. IEEE Computer, 15(2):14–25, Feb 1982.Google Scholar
  2. [Ada83]
    The Programming Language Ada Reference Manual. LNCS vol. 155. Springer, 1983.Google Scholar
  3. [Air91]
    Ada and C++: A Business Case Analysis. U.S. Air Force, Jul 1991.Google Scholar
  4. [AJ88]
    R. Allan and S. Johnson. Compiling C for Vectorization, Parallelization and Inline Expansion. In Proceedings of the SIGPLAN’ 88 Conference on Programming Language Design and Implementation. ACM, 1988.Google Scholar
  5. [ASU86]
    A.V. Aho, R. Sethi, and J.D. Ullman. Compilers. Addison-Wesley, 1986.Google Scholar
  6. [Bak93]
    H.G. Baker. How to Steal from a Limited Private Account. ACM Ada Letters, XIII(3):91–95, May 1993.CrossRefGoogle Scholar
  7. [Boo87]
    G. Booch. Software Engineering with Ada. Benjamin/Cummings, 1987.Google Scholar
  8. [Coo85]
    K.D. Cooper. Analyzing aliases of reference formal parameters. In Conference Record of the Twelfth Annual ACM Symposium on Principles of Programming Languages, pages 281–290. ACM, 1985.Google Scholar
  9. [Cor84]
    J.R. Cordy. Compile-Time Detection of Aliasing in Euclid Programs. Software–Practice and Experience, 14(8):744–768, Aug 1984.CrossRefGoogle Scholar
  10. [CTY94]
    D.K. Chen, J. Torellas, and P.C. Yew. An Efficient Algorithm for the Run-time Parallelization of DOACROSS Loops. In Proceedings of Supercomputing’94, pages 518–527. ACM and IEEE, 1994.Google Scholar
  11. [Eis97]
    M. Eisenstadt. My Hairiest Bug War Stories. Comm. ACM, 40(4):30–37, Apr 1997.CrossRefGoogle Scholar
  12. [Gel00]
    W. Gellerich. Ein datengesteuertes Ausführungsmodell für Programmier-sprachen mit mehrfacher Wertzuweisung (A data-driven execution model for programming languages with multiple assignment). PhD thesis, Universität Stuttgart, (available from Shaker Verlag, Postfach 1290, 52013 Aachen, Germany,, 2000. ISBN 3-8265-7900-3 URL.
  13. [GG96]
    J.P. Goodwin and E.F. Gehringer. Optimizing Procedure Calls in Block-structured Languages. Software Practice and Experience, 26(12):1385–1414, 1996.CrossRefGoogle Scholar
  14. [GJ87]
    C. Ghezzi and M. Jazayeri. Programming Language Concepts. John Wiley and Sons, 1987.Google Scholar
  15. [gna95]
    Gnu ada translator (gnat) documentation, 1995.
  16. [GP97]
    W. Gellerich and E. Plödereder. Parameter-induced aliasing and related problems can be avoided. In Reliable Software Technologies–Ada-Europe 1997, volume 1251 of LNCS, pages 161–172. Springer, 1997.Google Scholar
  17. [Hin90]
    K. Hines. Ada Impacts On A Second Generation Project. In Proceedings TRI-Ada’ 90, pages 488–492, Dec 1990.Google Scholar
  18. [Hoa89]
    C.A.R. Hoare. Hints on Programming Language Design (reprint). In Essays in Computing Science. Prentice Hall, 1989.Google Scholar
  19. [Hor79]
    J.J. Horning. A Case Study in Language Design: Euclid. In G. Goos and J. Hartmanis, editors, Program Construction, LNCS vol. 69. Springer, 1979.Google Scholar
  20. [HS97]
    S. Horwitz and M. Shapiro. The effects of the precision of pointer analysis. In Static Analysis 4th International Symposium. Springer, 1997.Google Scholar
  21. [Jok82]
    M.O. Jokinen. The Effect of Parameter Passing and Other Implementation Dependent Mechanisms is Undecidable. ACM SIGPLAN Notices, 17(9):16–17, Sep 1982.CrossRefGoogle Scholar
  22. [Leb93]
    R. Lebib. The Impact of Ada on MIS applications. In Proceedings of the 12th Ada-Europe International Conference, pages 54–63, Paris, Jun 1993.Google Scholar
  23. [LMSS91]
    J. Loeliger, R. Metzger, M. Seligman, and S. Stroud. Pointer target tracking. In Proceedings of Supercomputing’ 91, pages 14–23, 1991.Google Scholar
  24. [McC97]
    J.W. McCormick. Don’t Forget Ada. Comm. ACM, 40(8):30, Aug 1997.Google Scholar
  25. [Mor98]
    R. Morgan. Building an Optimizing Compiler. Butterworth-Heinemann, 1998.Google Scholar
  26. [Muc97]
    S.S. Muchnik. Compiler Design and Implementation. Morgan Kaufmann Publishers, 1997.Google Scholar
  27. [MW93]
    H.G. Mayer and M. Wolfe. Interprocedural Alias Analysis: Implementation and Empirical Results. Software Practice and Experience, 23(11):1202–1233, Nov 1993.CrossRefGoogle Scholar
  28. [OE92]
    K.J. Ottenstein and S.J. Ellcey. Experience Compiling Fortran to Program Dependence Graphs. Software Practice and Experience, 22:41–62, Jan 1992.CrossRefGoogle Scholar
  29. [Que]
  30. [Rei96]
    D.J. Reifer. Quantifying the Debate: Ada vs. C++, 1996.
  31. [Smi91]
    L. Smith. Vectorizing C compilers: How good are they? In Proceedings of Supercomputing’ 91, pages 544–553, 1991.Google Scholar
  32. [Sta94]
    J. Stare. Ada for DSP. Technical report, Tartan, Inc., 1994.
  33. [Syi95]
    D. Syiek. C vs Ada: Arguing Performance Religion. Ada Letters, 15(6):67–69, Nov/Dec 1995.CrossRefGoogle Scholar
  34. [Tan91]
    K. Tanaka. Using Ada at NTT. Ada Letters, 11(1):92–95, Jan/Feb 1991.CrossRefGoogle Scholar
  35. [TD98]
    S.T. Taft and R.A. Duff. Ada 95 Reference Manual. Springer, 1998.Google Scholar
  36. [Wal91]
    D.W. Wall. Limits of instruction-level parallelism. In Proc. ASPLOS-IV, Santa Clara, CA, pages 176–188. ACM, 1991.Google Scholar
  37. [Wol95]
    M.J. Wolfe. High-Performance Compilers for Parallel Computing. Addison-Wesley, 1995.Google Scholar
  38. [ZC92]
    H. Zima and B. Chapman. Supercompilers for Parallel and Vector Computers. Addison-Wesley, 1992.Google Scholar
  39. [Zei95]
    S.F. Zeigler. Comparing Development Costs of C and Ada, Mar 1995.

Copyright information

© Springer-Verlag Berlin Heidelberg 2001

Authors and Affiliations

  • Wolfgang Gellerich
    • 1
  • Erhard Plödereder
    • 2
  1. 1.IBM Deutschland Entwicklung GmbHBöblingenGermany
  2. 2.Computer Science DepartmentUniversity of StuttgartStuttgartGermany

Personalised recommendations