re PR fortran/54208 (compilation error for ubound construct in PARAMETER statements)
fortran/ PR fortran/54208 * simplify.c (simplify_bound_dim): Resolve array spec before proceeding with simplification. testsuite/ PR fortran/54208 * gfortran.dg/bound_simplification_3.f90: New test. From-SVN: r191083
This commit is contained in:
parent
e4394af568
commit
0423b64acd
|
@ -1,3 +1,9 @@
|
||||||
|
2012-09-07 Mikael Morin <mikael@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/54208
|
||||||
|
* simplify.c (simplify_bound_dim): Resolve array spec before
|
||||||
|
proceeding with simplification.
|
||||||
|
|
||||||
2012-09-06 Tobias Burnus <burnus@net-b.de>
|
2012-09-06 Tobias Burnus <burnus@net-b.de>
|
||||||
|
|
||||||
PR fortran/54463
|
PR fortran/54463
|
||||||
|
|
|
@ -3255,6 +3255,9 @@ simplify_bound_dim (gfc_expr *array, gfc_expr *kind, int d, int upper,
|
||||||
gcc_assert (array->expr_type == EXPR_VARIABLE);
|
gcc_assert (array->expr_type == EXPR_VARIABLE);
|
||||||
gcc_assert (as);
|
gcc_assert (as);
|
||||||
|
|
||||||
|
if (gfc_resolve_array_spec (as, 0) == FAILURE)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
/* The last dimension of an assumed-size array is special. */
|
/* The last dimension of an assumed-size array is special. */
|
||||||
if ((!coarray && d == as->rank && as->type == AS_ASSUMED_SIZE && !upper)
|
if ((!coarray && d == as->rank && as->type == AS_ASSUMED_SIZE && !upper)
|
||||||
|| (coarray && d == as->rank + as->corank
|
|| (coarray && d == as->rank + as->corank
|
||||||
|
|
|
@ -1,3 +1,8 @@
|
||||||
|
2012-09-07 Mikael Morin <mikael@gcc.gnu.org>
|
||||||
|
|
||||||
|
PR fortran/54208
|
||||||
|
* gfortran.dg/bound_simplification_3.f90: New test.
|
||||||
|
|
||||||
2012-09-07 Aldy Hernandez <aldyh@redhat.com>
|
2012-09-07 Aldy Hernandez <aldyh@redhat.com>
|
||||||
|
|
||||||
PR testsuite/54184
|
PR testsuite/54184
|
||||||
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
! { dg-do compile }
|
||||||
|
! { dg-options "-fdump-tree-original" }
|
||||||
|
!
|
||||||
|
! PR fortran/54208
|
||||||
|
! The I and J definitions used to raise an error because ARR's array spec
|
||||||
|
! was resolved to late for the LBOUND and UBOUND calls to be simplified to
|
||||||
|
! a constant.
|
||||||
|
!
|
||||||
|
! Contributed by Carlos A. Cruz <carlos.a.cruz@nasa.gov>
|
||||||
|
|
||||||
|
program testit
|
||||||
|
integer, parameter :: n=2
|
||||||
|
integer, dimension(1-min(n,2)/2:n) :: arr
|
||||||
|
integer, parameter :: i=lbound(arr,1)
|
||||||
|
integer, parameter :: j=ubound(arr,1)
|
||||||
|
! write(6,*) i, j
|
||||||
|
if (i /= 0) call abort
|
||||||
|
if (j /= 2) call abort
|
||||||
|
end program testit
|
||||||
|
|
||||||
|
! { dg-final { scan-tree-dump-times "bound" 0 "original" } }
|
||||||
|
! { dg-final { scan-tree-dump-times "abort" 0 "original" } }
|
||||||
|
! { dg-final { cleanup-tree-dump "original" } }
|
Loading…
Reference in New Issue