On Mon, 12 Feb 2018, Martin Sebor wrote: > Bug 84207 - Hard coded plural in gimple-fold.c points out one > of a number of warning_at() calls where warning_n() should have > been used. The attached patch both replaces the calls and also > changes the signatures of the warning_n(), error_n(), and > inform_n() functions to take an unsigned HOST_WIDE_INT argument > instead of int. I also changed the implementation of > diagnostic_n_impl() to deal with unsigned HOST_WIDE_INT values > in excess of ULONG_MAX (the maximum value ngettext handles) so > callers don't need to.
Saturating to ULONG_MAX is not correct for languages where the plural form depends on n%10 or n%100 (see the various Plural-Forms entries in the .po files). If n is too large you want something like n % 1000000 + 1000000 instead to get the correct plural form in all cases. -- Joseph S. Myers [email protected]
