FORTRAN = gfortran
LOADER = $(FORTRAN)
OPTS = -fbounds-check
DRVOPTS = $(OPTS)
NOOPT =
LOADOPTS = -fbounds-check
when make lapack_testing (after make blaslib ,make lib),
$./xlintsts < stest.in > stest.out
At line 47 of file ilaslr.f
Fortran runtime error: Array reference out of bounds for array 'a',
lower bound of dimension 1 exceeded (0 < 1)
47: IF( M.EQ.0 .OR. A(M, 1).NE.ZERO .OR. A(M, N).NE.ZERO ) THEN
48: ILASLR = M
49: ELSE
must be changed to something like
47: IF( M == 0 ) THEN
48: ILASLR = M
48a: ELSEIF( A(M, 1) /= ZERO .OR. A(M, N) /= ZERO ) THEN
48b: ILASLR = M
49: ELSE
in order to comply with standard. If this were translated by f2c, it
would be correct C, but Fortran doesn't have a shortcut rule like C for
compound logical expressions. It is entirely legitimate for a compiler to
evaluate each part of the logical expression simultaneously, so as to
speed it up, producing the reported violation.