re PR fortran/38859 (ubound and lbound treat structure component references as whole arrays)

2009-01-19  Mikael Morin  <mikael.morin@tele2.fr>

	PR fortran/38859
	* simplify.c (simplify_bound): Don't use array specification
	if variable or component has subsequent references.

2009-01-19  Mikael Morin  <mikael.morin@tele2.fr>

	PR fortran/38859
	* gfortran.dg/bound_5.f90: New test.

From-SVN: r143501
This commit is contained in:
Mikael Morin 2009-01-19 23:19:34 +01:00 committed by Mikael Morin
parent f68211cd04
commit 9295d9eda3
4 changed files with 41 additions and 1 deletions

View File

@ -1,3 +1,9 @@
2009-01-19 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/38859
* simplify.c (simplify_bound): Don't use array specification
if variable or component has subsequent references.
2009-01-17 Paul Thomas <pault@gcc.gnu.org>
PR fortran/38657

View File

@ -2253,7 +2253,10 @@ simplify_bound (gfc_expr *array, gfc_expr *dim, gfc_expr *kind, int upper)
case AR_FULL:
/* We're done because 'as' has already been set in the
previous iteration. */
goto done;
if (!ref->next)
goto done;
/* Fall through. */
case AR_SECTION:
case AR_UNKNOWN:

View File

@ -1,3 +1,8 @@
2009-01-19 Mikael Morin <mikael.morin@tele2.fr>
PR fortran/38859
* gfortran.dg/bound_5.f90: New test.
2009-01-18 H.J. Lu <hongjiu.lu@intel.com>
PR target/38736

View File

@ -0,0 +1,26 @@
! { dg-do run }
!
! PR fortran/38859
! Wrong bounds simplification
!
! Contributed by Dick Hendrickson <dick.hendrickson@gmail.com>
type x
integer I
end type x
type (x) A(0:5, 2:8)
integer ida(2)
ida = lbound(a)
if (any(ida /= (/0,2/))) call abort
ida = lbound(a%i)
if (any(ida /= (/1,1/))) call abort
ida = ubound(a)
if (any(ida /= (/5,8/))) call abort
ida = ubound(a%i)
if (any(ida /= (/6,7/))) call abort
end