diff options
Diffstat (limited to 'gcc/fortran/resolve.c')
-rw-r--r-- | gcc/fortran/resolve.c | 11 |
1 files changed, 5 insertions, 6 deletions
diff --git a/gcc/fortran/resolve.c b/gcc/fortran/resolve.c index 1ecfe05..a2b892a 100644 --- a/gcc/fortran/resolve.c +++ b/gcc/fortran/resolve.c @@ -10117,8 +10117,6 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns) bool rval = false; gfc_expr *lhs; gfc_expr *rhs; - int llen = 0; - int rlen = 0; int n; gfc_ref *ref; symbol_attribute attr; @@ -10200,10 +10198,11 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns) if (lhs->ts.type == BT_CHARACTER && warn_character_truncation) { + HOST_WIDE_INT llen = 0, rlen = 0; if (lhs->ts.u.cl != NULL && lhs->ts.u.cl->length != NULL && lhs->ts.u.cl->length->expr_type == EXPR_CONSTANT) - llen = mpz_get_si (lhs->ts.u.cl->length->value.integer); + llen = gfc_mpz_get_hwi (lhs->ts.u.cl->length->value.integer); if (rhs->expr_type == EXPR_CONSTANT) rlen = rhs->value.character.length; @@ -10211,13 +10210,13 @@ resolve_ordinary_assign (gfc_code *code, gfc_namespace *ns) else if (rhs->ts.u.cl != NULL && rhs->ts.u.cl->length != NULL && rhs->ts.u.cl->length->expr_type == EXPR_CONSTANT) - rlen = mpz_get_si (rhs->ts.u.cl->length->value.integer); + rlen = gfc_mpz_get_hwi (rhs->ts.u.cl->length->value.integer); if (rlen && llen && rlen > llen) gfc_warning_now (OPT_Wcharacter_truncation, "CHARACTER expression will be truncated " - "in assignment (%d/%d) at %L", - llen, rlen, &code->loc); + "in assignment (%ld/%ld) at %L", + (long) llen, (long) rlen, &code->loc); } /* Ensure that a vector index expression for the lvalue is evaluated |