[Bug fortran/29572] Bounds check should check size of array: d(1:1,1:1) = a(1:4,1:4)
tkoenig at gcc dot gnu dot org
gcc-bugzilla@gcc.gnu.org
Fri Jul 25 08:16:00 GMT 2008
------- Comment #2 from tkoenig at gcc dot gnu dot org 2008-07-25 08:15 -------
This works now, with the fixes for matmul bounds checks
(PR 36341):
$ cat mat.f90
program mat
implicit none
complex, allocatable :: a(:,:),b(:,:)
complex :: d(1,1)
allocate(a(4,1),b(4,1))
a = cmplx(0.5,2.0)
b = cmplx(2.0,0.5)
d = matmul(a,transpose(b))
deallocate(a,b)
end program mat
$ gfortran -fbounds-check mat.f90
$ ./a.out
Fortran runtime error: Incorrect extent in return array in MATMUL intrinsic for
dimension 1: is 1, should be 4
$ cat mat-2.f90
program mat
implicit none
complex, allocatable :: a(:,:),b(:,:)
complex :: d(1,1)
allocate(a(4,1),b(4,1))
a = cmplx(0.5,2.0)
b = cmplx(2.0,0.5)
d = matmul(a,b)
deallocate(a,b)
end program mat
$ gfortran -fbounds-check mat-2.f90
$ ./a.out
Fortran runtime error: Incorrect extent in return array in MATMUL intrinsic for
dimension 1: is 1, should be 4
The case of user-defined functions also works:
$ cat f.f90
module a
contains
function f(x)
real, intent(in) :: x
real, dimension(3,3) :: f
f = x
end function f
end module a
program main
use a
real, dimension(2,2) :: b
b = f(1.0)
end program main
$ gfortran f.f90
f.f90:13.3:
b = f(1.0)
1
Error: Different shape for array assignment at (1) on dimension 1 (2 and 3)
Closing.
--
tkoenig at gcc dot gnu dot org changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|NEW |RESOLVED
Resolution| |FIXED
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=29572
More information about the Gcc-bugs
mailing list