Skip to content

Commit

Permalink
2008-02-02 Thomas Koenig <[email protected]>
Browse files Browse the repository at this point in the history
	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  <[email protected]>

	PR libfortran/35001
	* gfortran.dg/shape_4.f90:  New test.

Fixed in regression-only mode by special dispense (see the PR).



git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@132070 138bc75d-0d04-0410-961f-82ee72b054a4
  • Loading branch information
tkoenig committed Feb 2, 2008
1 parent 957fb08 commit 056eb8d
Show file tree
Hide file tree
Showing 7 changed files with 37 additions and 8 deletions.
5 changes: 5 additions & 0 deletions gcc/testsuite/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,8 @@
2008-02-02 Thomas Koenig <[email protected]>

PR libfortran/35001
* gfortran.dg/shape_4.f90: New test.

2008-02-02 Hans-Peter Nilsson <[email protected]>

* gcc.target/cris/torture/pr34773.c: Use __asm__, not asm.
Expand Down
12 changes: 12 additions & 0 deletions gcc/testsuite/gfortran.dg/shape_4.f90
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
! PR 35001 - we need to return 0 for the shapes of
! negative extents. Test case adapted from Tobias Burnus.
program main
implicit none
integer :: i,j, a(10,10),res(2)
j = 1
i = 10
res = shape(a(1:1,i:j:1))
if (res(1) /=1 .or. res(2) /= 0) call abort
res = shape(a(1:1,j:i:-1))
if (res(1) /=1 .or. res(2) /= 0) call abort
end program main
8 changes: 8 additions & 0 deletions libgfortran/ChangeLog
Original file line number Diff line number Diff line change
@@ -1,3 +1,11 @@
2008-02-02 Thomas Koenig <[email protected]>

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-01-27 Thomas Koenig <[email protected]>

PR libfortran/34980
Expand Down
5 changes: 3 additions & 2 deletions libgfortran/generated/shape_i16.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ shape_16 (gfc_array_i16 * const restrict ret,
{
int n;
index_type stride;
index_type extent;

stride = ret->dim[0].stride;

Expand All @@ -53,8 +54,8 @@ shape_16 (gfc_array_i16 * 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 ;
}
}

Expand Down
5 changes: 3 additions & 2 deletions libgfortran/generated/shape_i4.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ shape_4 (gfc_array_i4 * const restrict ret,
{
int n;
index_type stride;
index_type extent;

stride = ret->dim[0].stride;

Expand All @@ -53,8 +54,8 @@ shape_4 (gfc_array_i4 * 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 ;
}
}

Expand Down
5 changes: 3 additions & 2 deletions libgfortran/generated/shape_i8.c
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,7 @@ shape_8 (gfc_array_i8 * const restrict ret,
{
int n;
index_type stride;
index_type extent;

stride = ret->dim[0].stride;

Expand All @@ -53,8 +54,8 @@ shape_8 (gfc_array_i8 * 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 ;
}
}

Expand Down
5 changes: 3 additions & 2 deletions libgfortran/m4/shape.m4
Original file line number Diff line number Diff line change
Expand Up @@ -46,6 +46,7 @@ shape_'rtype_kind` ('rtype` * const restrict ret,
{
int n;
index_type stride;
index_type extent;

stride = ret->dim[0].stride;

Expand All @@ -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 ;
}
}

Expand Down

0 comments on commit 056eb8d

Please sign in to comment.