Skip to main content

Eliminating Redundant Range Checks in GNAT Using Symbolic Evaluation

  • Conference paper
  • First Online:
Reliable Software Technologies — Ada-Europe 2003 (Ada-Europe 2003)

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

Included in the following conference series:

Abstract

Implementation of a strongly typed language such as Ada95 requires range checks in the presence of array index expressions and assignment statements. Range checks that cannot be eliminated by the compiler must be executed at run-time, inducing execution time and code size overhead. In this work we propose a new approach for eliminating range checks that is based on symbolic evaluation. Type information provided by the underlying programming language is heavily exploited.

This is a preview of subscription content, log in via an institution to check access.

Access this chapter

Chapter
USD 29.95
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
eBook
USD 39.99
Price excludes VAT (USA)
  • Available as PDF
  • Read on any device
  • Instant download
  • Own it forever
Softcover Book
USD 54.99
Price excludes VAT (USA)
  • Compact, lightweight edition
  • Dispatched in 3 to 5 business days
  • Free shipping worldwide - see info

Tax calculation will be finalised at checkout

Purchases are for personal use only

Institutional subscriptions

Preview

Unable to display preview. Download preview PDF.

Unable to display preview. Download preview PDF.

References

  1. ISO/IEC 8652. Ada Reference Manual, 1995.

    Google Scholar 

  2. J. Blieberger and B. Burgstaller. Symbolic Reaching Definitions Analysis of Ada Programs. In Proc. of the Ada-Europe International Conference on Reliable Software Technologies, pages 238–250, Uppsala, Sweden, June 1998.

    Google Scholar 

  3. J. Blieberger, B. Burgstaller, and B. Scholz. Interprocedural Symbolic Evaluation of Ada Programs with Aliases. In Proc. of the Ada-Europe International Conference on Reliable Software Technologies, pages 136–145, Santander, Spain, June 1999.

    Google Scholar 

  4. J. Blieberger, T. Fahringer, and B. Scholz. Symbolic Cache Analysis for Real-Time Systems. Real-Time Systems, Special Issue on Worst-Case Execution Time Analysis, 18(2/3):181–215, 2000.

    Google Scholar 

  5. J. Blieberger. Data-Flow Frameworks for Worst-Case Execution Time Analysis. Real-Time Systems, 22(3):183–227, May 2002.

    Article  MATH  Google Scholar 

  6. T.E. Cheatham, G.H. Holloway, and J.A. Townley. Symbolic Evaluation and the Analysis of Programs. IEEE Trans. on Software Engineering, 5(4):403–417, July 1979.

    Article  Google Scholar 

  7. T. Fahringer and B. Scholz. Symbolic Evaluation for Parallelizing Compilers. In Proc. of the ACM International Conference on Supercomputing, July 1997.

    Google Scholar 

  8. M.R. Haghighat. Symbolic Analysis for Parallelizing Compilers. Kluwer Academic, 1995.

    Google Scholar 

  9. R. Maeder. Programming in Mathematica. Addison-Wesley, Reading, MA, USA, 1990.

    Google Scholar 

  10. V. Maslov and W. Pugh. Simplifying Polynomial Constraints Over Integers to Make Dependence Analysis More Precise. In Proc. of the International Conference on Parallel and Vector Processing, pages 737–748, Linz, Austria, 1994.

    Google Scholar 

  11. W. Pugh. The Omega Test: A Fast and Practical Integer Programming Algorithm for Dependence Analysis. Communications of the ACM, 35(8):102–114, August 1992.

    Article  Google Scholar 

  12. H. Rogers Jr. Theory of Recursive Functions and Effective Computability. MIT Press, Cambridge, MA, 1987.

    Google Scholar 

  13. B. G. Ryder and M.C. Paull. Elimination Algorithms for Data Flow Analysis. ACM Computing Surveys (CSUR), 18(3):277–316, 1986.

    Article  Google Scholar 

  14. R. Rugina and M. Rinard. Symbolic Bounds Analysis of Pointers, Array Indices, and Accessed Memory Regions. In Proc. of PLDI, pages 182–195, 2000.

    Google Scholar 

  15. E. Schonberg and B. Banner. The GNAT Project: A GNU-Ada 9X Compiler. In Proc. of the Conference on TRI-Ada’ 94, pages 48–57. ACM Press, 1994.

    Google Scholar 

  16. B. Scholz, J. Blieberger, and T. Fahringer. Symbolic Pointer Analysis for Detecting Memory Leaks. In ACM SIGPLAN Workshop on “Partial Evaluation and Semantics-Based Program Manipulation”, Boston, January 2000.

    Google Scholar 

  17. R. Sedgewick. Algorithms. Addison-Wesley, Reading, MA, USA, 2nd edition, 1988.

    Google Scholar 

  18. R. E. Shostak. A Practical Decision Procedure for Arithmetic with Function Symbols. Journal of the ACM, 26(2):351–360, April 1979.

    Article  MATH  MathSciNet  Google Scholar 

  19. Z. Shen, Z. Li, and P.-C. Yew. An Empirical Study of Fortran Programs for Parallelizing Compilers. IEEE Transactions on Parallel and Distributed Systems, 1(3):356–364, July 1990.

    Article  Google Scholar 

  20. V.C. Sreedhar. Efficient Program Analysis Using DJ Graphs. PhD thesis, School of Computer Science, McGill University, Montréal, Québec, Canada, 1995.

    Google Scholar 

Download references

Author information

Authors and Affiliations

Authors

Editor information

Editors and Affiliations

Rights and permissions

Reprints and permissions

Copyright information

© 2003 Springer-Verlag Berlin Heidelberg

About this paper

Cite this paper

Blieberger, J., Burgstaller, B. (2003). Eliminating Redundant Range Checks in GNAT Using Symbolic Evaluation. In: Rosen, JP., Strohmeier, A. (eds) Reliable Software Technologies — Ada-Europe 2003. Ada-Europe 2003. Lecture Notes in Computer Science, vol 2655. Springer, Berlin, Heidelberg. https://doi.org/10.1007/3-540-44947-7_11

Download citation

  • DOI: https://doi.org/10.1007/3-540-44947-7_11

  • Published:

  • Publisher Name: Springer, Berlin, Heidelberg

  • Print ISBN: 978-3-540-40376-0

  • Online ISBN: 978-3-540-44947-8

  • eBook Packages: Springer Book Archive

Publish with us

Policies and ethics