diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2007-09-06 19:25:30 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2007-09-06 19:25:30 +0000 |
commit | 3cc50edcc07024dd3d34067654794a45f21dd408 (patch) | |
tree | 7548143d4fd494513065439cea1d484e2a9228a5 /gcc | |
parent | 6f6cc094a09dca5d3ba1ad34c58e0007475f75ea (diff) | |
download | gcc-3cc50edcc07024dd3d34067654794a45f21dd408.zip gcc-3cc50edcc07024dd3d34067654794a45f21dd408.tar.gz gcc-3cc50edcc07024dd3d34067654794a45f21dd408.tar.bz2 |
re PR libfortran/33298 (Wrong code for SPREAD on zero-sized arrays)
2007-09-06 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/33298
* intrinsics/spread_generic.c(spread_internal): Enable
bounds checking by comparing extents if the bounds_check
option has been set. If any extent is <=0, return early.
2007-09-06 Thomas Koenig <tkoenig@gcc.gnu.org>
PR fortran/33298
* spread_zerosize_1.f90: New test case.
* spread_bounds_1.f90: New test case.
From-SVN: r128206
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/testsuite/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/spread_bounds_1.f90 | 12 | ||||
-rw-r--r-- | gcc/testsuite/gfortran.dg/spread_zerosize_1.f90 | 8 |
3 files changed, 26 insertions, 0 deletions
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index de450f6..8771b42 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,9 @@ +2007-09-06 Thomas Koenig <tkoenig@gcc.gnu.org> + + PR fortran/33298 + * spread_zerosize_1.f90: New test case. + * spread_bounds_1.f90: New test case. + 2007-09-06 Paolo Carlini <pcarlini@suse.de> PR c++/32674 diff --git a/gcc/testsuite/gfortran.dg/spread_bounds_1.f90 b/gcc/testsuite/gfortran.dg/spread_bounds_1.f90 new file mode 100644 index 0000000..7e5bc65 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/spread_bounds_1.f90 @@ -0,0 +1,12 @@ +! { dg-do run } +! { dg-options "-fbounds-check" } +! { dg-shouldfail "Incorrect extent in return value of SPREAD intrinsic in dimension 2: is 3, should be 2" } +program main + integer :: source(2), target(2,3) + data source /1,2/ + integer :: times + times = 2 + target = spread(source,2,times) +end program main +! { dg-output "Fortran runtime error: Incorrect extent in return value of SPREAD intrinsic in dimension 2: is 3, should be 2" + diff --git a/gcc/testsuite/gfortran.dg/spread_zerosize_1.f90 b/gcc/testsuite/gfortran.dg/spread_zerosize_1.f90 new file mode 100644 index 0000000..98a2848 --- /dev/null +++ b/gcc/testsuite/gfortran.dg/spread_zerosize_1.f90 @@ -0,0 +1,8 @@ +! { dg-do run } +! PR 33298 - zero-sized arrays for spread were handled +! incorrectly. + +program main + real :: x(0,3), y(0) + x = spread(y,2,3) +end |