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

Reply via email to