diff options
author | Thomas Koenig <tkoenig@gcc.gnu.org> | 2008-02-02 13:50:55 +0000 |
---|---|---|
committer | Thomas Koenig <tkoenig@gcc.gnu.org> | 2008-02-02 13:50:55 +0000 |
commit | ee440dd05de292dde12376f8a977d2a4bf22c2c3 (patch) | |
tree | 41b636e47d1922843adc517116bfd40c4acb7428 /libgfortran/m4 | |
parent | 27f56cb1f2c371e33b32e1adb1f0f571c1266c41 (diff) | |
download | gcc-ee440dd05de292dde12376f8a977d2a4bf22c2c3.zip gcc-ee440dd05de292dde12376f8a977d2a4bf22c2c3.tar.gz gcc-ee440dd05de292dde12376f8a977d2a4bf22c2c3.tar.bz2 |
re PR libfortran/35001 (shape for negative sizes)
2008-02-02 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/35001
* m4/shape.m4: Return 0 for extents <= 0.
* generated/shape_i4.c: Regenerated.
* generated/shape_i8.c: Regenerated.
* generated/shape_i16.c: Regenerated.
2008-02-02 Thomas Koenig <tkoenig@gcc.gnu.org>
PR libfortran/35001
* gfortran.dg/shape_4.f90: New test.
Fixed in regression-only mode by special dispense (see the PR).
From-SVN: r132070
Diffstat (limited to 'libgfortran/m4')
-rw-r--r-- | libgfortran/m4/shape.m4 | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/libgfortran/m4/shape.m4 b/libgfortran/m4/shape.m4 index 3bda0ad..c783270 100644 --- a/libgfortran/m4/shape.m4 +++ b/libgfortran/m4/shape.m4 @@ -46,6 +46,7 @@ shape_'rtype_kind` ('rtype` * const restrict ret, { int n; index_type stride; + index_type extent; stride = ret->dim[0].stride; @@ -54,8 +55,8 @@ shape_'rtype_kind` ('rtype` * const restrict ret, for (n = 0; n < GFC_DESCRIPTOR_RANK (array); n++) { - ret->data[n * stride] = - array->dim[n].ubound + 1 - array->dim[n].lbound; + extent = array->dim[n].ubound + 1 - array->dim[n].lbound; + ret->data[n * stride] = extent > 0 ? extent : 0 ; } } |