Commit ce99d594 by Thomas Koenig Committed by Thomas Koenig

re PR fortran/25045 ([4.1 only] DIM argument of PRODUCT is not optional)

2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>

        PR fortran/25045
        * check.c (dim_check):  Perform all checks if dim is optional.
        (gfc_check_minloc_maxloc):  Use dim_check and dim_rank_check
        to check dim argument.
        (check_reduction):  Likewise.

2006-02-14  Thomas Koenig  <Thomas.Koenig@online.de>

        PR fortran/25045
        * optional_dim.f90:  New test.

From-SVN: r110994
parent 89031799
2006-02-14 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/25045
* check.c (dim_check): Perform all checks if dim is optional.
(gfc_check_minloc_maxloc): Use dim_check and dim_rank_check
to check dim argument.
(check_reduction): Likewise.
2006-02-14 Tobias Schlter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/26277
......
......@@ -295,16 +295,8 @@ variable_check (gfc_expr * e, int n)
static try
dim_check (gfc_expr * dim, int n, int optional)
{
if (optional)
{
if (dim == NULL)
return SUCCESS;
if (nonoptional_check (dim, n) == FAILURE)
return FAILURE;
return SUCCESS;
}
if (optional && dim == NULL)
return SUCCESS;
if (dim == NULL)
{
......@@ -319,6 +311,9 @@ dim_check (gfc_expr * dim, int n, int optional)
if (scalar_check (dim, n) == FAILURE)
return FAILURE;
if (nonoptional_check (dim, n) == FAILURE)
return FAILURE;
return SUCCESS;
}
......@@ -1578,9 +1573,10 @@ gfc_check_minloc_maxloc (gfc_actual_arglist * ap)
ap->next->next->expr = m;
}
if (d != NULL
&& (scalar_check (d, 1) == FAILURE
|| type_check (d, 1, BT_INTEGER) == FAILURE))
if (dim_check (d, 1, 1) == FAILURE)
return FAILURE;
if (dim_rank_check (d, a, 0) == FAILURE)
return FAILURE;
if (m != NULL && type_check (m, 2, BT_LOGICAL) == FAILURE)
......@@ -1634,9 +1630,10 @@ check_reduction (gfc_actual_arglist * ap)
ap->next->next->expr = m;
}
if (d != NULL
&& (scalar_check (d, 1) == FAILURE
|| type_check (d, 1, BT_INTEGER) == FAILURE))
if (dim_check (d, 1, 1) == FAILURE)
return FAILURE;
if (dim_rank_check (d, a, 0) == FAILURE)
return FAILURE;
if (m != NULL && type_check (m, 2, BT_LOGICAL) == FAILURE)
......
2006-02-14 Thomas Koenig <Thomas.Koenig@online.de>
PR fortran/25045
* optional_dim.f90: New test.
2006-02-14 Tobias Schlter <tobias.schlueter@physik.uni-muenchen.de>
PR fortran/26277
! { dg-do compile }
subroutine foo(a,n)
real, dimension(2) :: a
integer, optional :: n
print *,maxloc(a,dim=n) ! { dg-error "must not be OPTIONAL" }
print *,maxloc(a,dim=4) ! { dg-error "is not a valid dimension index" }
print *,maxval(a,dim=n) ! { dg-error "must not be OPTIONAL" }
print *,maxval(a,dim=4) ! { dg-error "is not a valid dimension index" }
end subroutine foo
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment