Index: expr.c =================================================================== --- expr.c (revision 110306) +++ expr.c (working copy) @@ -1821,7 +1821,7 @@ gfc_check_conformance (const char *optyp if (op1_flag && op2_flag && mpz_cmp (op1_size, op2_size) != 0) { - gfc_error ("%s at %L has different shape on dimension %d (%d/%d)", + gfc_error ("different shape for %s at %L on dimension %d (%d/%d)", _(optype_msgid), &op1->where, d + 1, (int) mpz_get_si (op1_size), (int) mpz_get_si (op2_size)); Index: check.c =================================================================== --- check.c (revision 110306) +++ check.c (working copy) @@ -354,7 +354,6 @@ dim_rank_check (gfc_expr * dim, gfc_expr return SUCCESS; } - /***** Check functions *****/ /* Check subroutine suitable for intrinsics taking a real argument and @@ -1526,6 +1525,16 @@ gfc_check_minloc_maxloc (gfc_actual_argl if (m != NULL && type_check (m, 2, BT_LOGICAL) == FAILURE) return FAILURE; + if (m != NULL) + { + char buffer[80]; + snprintf(buffer, sizeof(buffer), "arguments '%s' and '%s' for intrinsic %s", + gfc_current_intrinsic_arg[0], gfc_current_intrinsic_arg[2], + gfc_current_intrinsic); + if (gfc_check_conformance (buffer, a, m) == FAILURE) + return FAILURE; + } + return SUCCESS; } @@ -1548,8 +1557,9 @@ gfc_check_minloc_maxloc (gfc_actual_argl static try check_reduction (gfc_actual_arglist * ap) { - gfc_expr *m, *d; + gfc_expr *a, *m, *d; + a = ap->expr; d = ap->next->expr; m = ap->next->next->expr; @@ -1571,6 +1581,16 @@ check_reduction (gfc_actual_arglist * ap if (m != NULL && type_check (m, 2, BT_LOGICAL) == FAILURE) return FAILURE; + if (m != NULL) + { + char buffer[80]; + snprintf(buffer, sizeof(buffer), "arguments '%s' and '%s' for intrinsic %s", + gfc_current_intrinsic_arg[0], gfc_current_intrinsic_arg[2], + gfc_current_intrinsic); + if (gfc_check_conformance (buffer, a, m) == FAILURE) + return FAILURE; + } + return SUCCESS; }