[comp.lang.fortran] Smart array bounds checking

mccalpin@vax1.acs.udel.EDU (John D Mccalpin) (03/15/90)

Comment:  On most computers using FORTRAN the array bounds checking 
          option utterly destroys program performance.  I presume that
          this is because the checking is not done very cleverly!

Example:  A typical function might be (in a language almost like Turing):

          function dot_vv ( x, y : array 1..* of real) : real
              if upper(x) <> upper(y)
                  exit ("inconsistent vector lengths in dot_vv")
              end if
              var sum:=0.0             % declare and initialize
              for i : 1 .. upper(x)    
                 sum := sum + x(i)*y(i)
              end for
              result sum               % specify return value
          end dot_vv

Comment:  Array bounds checking does not need to be done on the
          preceeding function!  The combination of the intrinsic
          function `upper' with the `if' test guarantees that
          all the references are going to be legal (assuming
          one-based arrays - minor detail).

Question: Does anyone know of any compilers that have at least this 
          level of intelligence about array bounds checking?
          Since >>99% of the array references in my codes are in
          loops of this sort, smart array bounds checking should
          require a negligible overhead.

Comment:  The FORTRAN version of this is obvious, though the FORTRAN
          semantics cannot guarantee that the thing passed is really
          an array of the correct size and type.  The principle is 
          the same -- since the vast majority of array references are
          in loops, it suffices to check the start and stop indices
          of the loops (with corrections for any offsets).
          Based on the performance of array-bounds checking on the
          FORTRAN compilers that I know well, this does not seem to be 
          the way it is done in the real world.
-- 
John D. McCalpin                               mccalpin@vax1.acs.udel.edu
Assistant Professor                            mccalpin@delocn.udel.edu
College of Marine Studies, U. Del.             mccalpin@scri1.scri.fsu.edu