https://gcc.gnu.org/bugzilla/show_bug.cgi?id=83704
--- Comment #16 from Thomas Koenig <tkoenig at gcc dot gnu.org> --- I hadn't actually compiled this... but then this at least compiles. Index: resolve.c =================================================================== --- resolve.c (Revision 256284) +++ resolve.c (Arbeitskopie) @@ -10120,8 +10120,8 @@ resolve_ordinary_assign (gfc_code *code, gfc_names bool rval = false; gfc_expr *lhs; gfc_expr *rhs; - int llen = 0; - int rlen = 0; + ptrdiff_t llen = 0; + ptrdiff_t rlen = 0; int n; gfc_ref *ref; symbol_attribute attr; @@ -10219,8 +10219,8 @@ resolve_ordinary_assign (gfc_code *code, gfc_names 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 int) llen, (long int) rlen, &code->loc); } /* Ensure that a vector index expression for the lvalue is evaluated I don't have the RAM to test it on my system at the moment.