Hi! This inform is correct in english, but wrong in many other languages.
Bootstrapped/regtested on x86_64-linux and i686-linux, ok for trunk? 2017-12-19 Jakub Jelinek <ja...@redhat.com> * gimple-ssa-sprintf.c (format_directive): Use inform_n instead of inform with hardcoded english plural handling. --- gcc/gimple-ssa-sprintf.c.jj 2017-12-14 12:00:32.000000000 +0100 +++ gcc/gimple-ssa-sprintf.c 2017-12-19 12:19:10.975042433 +0100 @@ -2933,13 +2933,15 @@ format_directive (const sprintf_dom_walk if (warned && fmtres.range.min < fmtres.range.likely && fmtres.range.likely < fmtres.range.max) - { - inform (info.fmtloc, - (1 == fmtres.range.likely - ? G_("assuming directive output of %wu byte") - : G_("assuming directive output of %wu bytes")), + /* Some languages have special plural rules even for large values, + but it is periodic with period of 10, 100, 1000 etc. */ + inform_n (info.fmtloc, + fmtres.range.likely > INT_MAX + ? (fmtres.range.likely % 1000000) + 1000000 + : fmtres.range.likely, + "assuming directive output of %wu byte", + "assuming directive output of %wu bytes", fmtres.range.likely); - } if (warned && fmtres.argmin) { Jakub