------- Comment #11 from paul dot richard dot thomas at cea dot fr  2006-03-01 
16:30 -------
I believe that this PR should be closed as resolved.  Since p is uninitialized
in the original test case, it can and does produce out of range array
references for lu(comment #6).  The following development of the testcase runs
fine:

  program Driver
    real :: a(4,4)
    call factor
contains
    subroutine Factor
      real :: A(4, 4), B(4), lu(4,4)
      integer:: p(4)=(/1,2,3,4/)
      integer:: I
      I = 1
      do M = 1, 4
          LU(P(I), M) = Reduce (LU(P(I), M), LU(P(I), 1: M - 1), LU(P(1: M -
1), M))
      end do

      return
    end subroutine Factor  
    function Reduce (A, Row, Col)
      real :: A, Row(:), Col(:)
      print *, "size of row=", size(row)
      print *, "size of col=", size(col)
      reduce = 0
    end function Reduce
  end program Driver

producing

$ ./a
 size of row=           0
 size of col=           0
 size of row=           1
 size of col=           1
 size of row=           2
 size of col=           2
 size of row=           3
 size of col=           3

which shows that the programmer must take care of his or her array references!

The question of what to do with negative memory requests is of course tied up
by the confusion with integer overflows as the error message in
memory.c(allocate) says.  PR26017 is an unambiguous case where this error
should not be triggered and will function as a placeholder for this type of
problem. 


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=15335

Reply via email to