diff options
Diffstat (limited to 'gcc/fortran/check.c')
| -rw-r--r-- | gcc/fortran/check.c | 29 |
1 files changed, 13 insertions, 16 deletions
diff --git a/gcc/fortran/check.c b/gcc/fortran/check.c index dc6541c..6d3fd3d 100644 --- a/gcc/fortran/check.c +++ b/gcc/fortran/check.c @@ -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) |
