Abstract
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.
Access this chapter
Tax calculation will be finalised at checkout
Purchases are for personal use only
Preview
Unable to display preview. Download preview PDF.
References
W.B. Ackerman. Data Flow Languages. IEEE Computer, 15(2):14–25, Feb 1982.
The Programming Language Ada Reference Manual. LNCS vol. 155. Springer, 1983.
Ada and C++: A Business Case Analysis. U.S. Air Force, Jul 1991.
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.
A.V. Aho, R. Sethi, and J.D. Ullman. Compilers. Addison-Wesley, 1986.
H.G. Baker. How to Steal from a Limited Private Account. ACM Ada Letters, XIII(3):91–95, May 1993.
G. Booch. Software Engineering with Ada. Benjamin/Cummings, 1987.
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.
J.R. Cordy. Compile-Time Detection of Aliasing in Euclid Programs. Software–Practice and Experience, 14(8):744–768, Aug 1984.
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.
M. Eisenstadt. My Hairiest Bug War Stories. Comm. ACM, 40(4):30–37, Apr 1997.
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, http://www.shaker.de), 2000. ISBN 3-8265-7900-3 URL.
J.P. Goodwin and E.F. Gehringer. Optimizing Procedure Calls in Block-structured Languages. Software Practice and Experience, 26(12):1385–1414, 1996.
C. Ghezzi and M. Jazayeri. Programming Language Concepts. John Wiley and Sons, 1987.
Gnu ada translator (gnat) documentation, 1995. http://cs.nyu.edu:/pub/gnat.
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.
K. Hines. Ada Impacts On A Second Generation Project. In Proceedings TRI-Ada’ 90, pages 488–492, Dec 1990.
C.A.R. Hoare. Hints on Programming Language Design (reprint). In Essays in Computing Science. Prentice Hall, 1989.
J.J. Horning. A Case Study in Language Design: Euclid. In G. Goos and J. Hartmanis, editors, Program Construction, LNCS vol. 69. Springer, 1979.
S. Horwitz and M. Shapiro. The effects of the precision of pointer analysis. In Static Analysis 4th International Symposium. Springer, 1997.
M.O. Jokinen. The Effect of Parameter Passing and Other Implementation Dependent Mechanisms is Undecidable. ACM SIGPLAN Notices, 17(9):16–17, Sep 1982.
R. Lebib. The Impact of Ada on MIS applications. In Proceedings of the 12th Ada-Europe International Conference, pages 54–63, Paris, Jun 1993.
J. Loeliger, R. Metzger, M. Seligman, and S. Stroud. Pointer target tracking. In Proceedings of Supercomputing’ 91, pages 14–23, 1991.
J.W. McCormick. Don’t Forget Ada. Comm. ACM, 40(8):30, Aug 1997.
R. Morgan. Building an Optimizing Compiler. Butterworth-Heinemann, 1998.
S.S. Muchnik. Compiler Design and Implementation. Morgan Kaufmann Publishers, 1997.
H.G. Mayer and M. Wolfe. Interprocedural Alias Analysis: Implementation and Empirical Results. Software Practice and Experience, 23(11):1202–1233, Nov 1993.
K.J. Ottenstein and S.J. Ellcey. Experience Compiling Fortran to Program Dependence Graphs. Software Practice and Experience, 22:41–62, Jan 1992.
http://www.informatik.uni-stuttgart.de/ifi/ps/ada-software/ada-software.html, ftp://ftp.informatik.uni-stuttgart.de, ftp://ftp.uni-stuttgart.de.
D.J. Reifer. Quantifying the Debate: Ada vs. C++, 1996. http://www.stsc.hill.af.mil/crosstalk/1996/jul/quantify.html.
L. Smith. Vectorizing C compilers: How good are they? In Proceedings of Supercomputing’ 91, pages 544–553, 1991.
J. Stare. Ada for DSP. Technical report, Tartan, Inc., 1994. http://www.adahome.com/Ammo/Stories/Tartan-Realtime.html.
D. Syiek. C vs Ada: Arguing Performance Religion. Ada Letters, 15(6):67–69, Nov/Dec 1995.
K. Tanaka. Using Ada at NTT. Ada Letters, 11(1):92–95, Jan/Feb 1991.
S.T. Taft and R.A. Duff. Ada 95 Reference Manual. Springer, 1998.
D.W. Wall. Limits of instruction-level parallelism. In Proc. ASPLOS-IV, Santa Clara, CA, pages 176–188. ACM, 1991.
M.J. Wolfe. High-Performance Compilers for Parallel Computing. Addison-Wesley, 1995.
H. Zima and B. Chapman. Supercompilers for Parallel and Vector Computers. Addison-Wesley, 1992.
S.F. Zeigler. Comparing Development Costs of C and Ada, Mar 1995. http://www.rational.com/sitewide/support/whitepapers/.
Author information
Authors and Affiliations
Editor information
Editors and Affiliations
Rights and permissions
Copyright information
© 2001 Springer-Verlag Berlin Heidelberg
About this paper
Cite this paper
Gellerich, W., Plödereder, E. (2001). Parameter-Induced Aliasing in Ada. In: Craeynest, D., Strohmeier, A. (eds) Reliable SoftwareTechnologies — Ada-Europe 2001. Ada-Europe 2001. Lecture Notes in Computer Science, vol 2043. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-45136-6_6
Download citation
DOI: https://doi.org/10.1007/3-540-45136-6_6
Published:
Publisher Name: Springer, Berlin, Heidelberg
Print ISBN: 978-3-540-42123-8
Online ISBN: 978-3-540-45136-5
eBook Packages: Springer Book Archive