https://gcc.gnu.org/bugzilla/show_bug.cgi?id=78703
--- Comment #9 from Martin Sebor <msebor at gcc dot gnu.org> --- Author: msebor Date: Thu Jan 26 21:14:18 2017 New Revision: 244953 URL: https://gcc.gnu.org/viewcvs?rev=244953&root=gcc&view=rev Log: PR middle-end/78703 -fprintf-return-value floating point handling incorrect in locales with a mulltibyte decimal point gcc/ChangeLog: PR middle-end/78703 * gimple-ssa-sprintf.c (struct result_range): Add likely and unlikely counters. (struct format_result): Replace number_chars, number_chars_min, and number_chars_max with a single member of struct result_range. Remove bounded. (format_result::operator+=): Adjust. (struct fmtresult): Remove bounded. Handle likely and unlikely counters. (fmtresult::adjust_for_width_or_precision): New function. (fmtresult:type_max_digits): New function. (bytes_remaining): Handle likely and unlikely counters. (min_bytes_remaining): Remove. (format_percent): Simplify. (format_integer, format_floating): Set likely and unlikely counters. (get_string_length, format_character, format_string): Same. (format_plain, should_warn_p): New function. (maybe_warn): Call should_warn_p. Update diagnostic messages and handle those for all directives, including plain strings. (format_directive): Handle likely and unlikely counters. Remove unnecessary quoting from diagnostics. Add an informational note. (add_bytes): Remove. (pass_sprintf_length::compute_format_length): Simplify. (try_substitute_return_value): Handle likely and unlikely counters. gcc/testsuite/ChangeLog: PR middle-end/78703 * gcc.dg/format/pr78569.c: Adjust. * gcc.dg/tree-ssa/builtin-snprintf-warn-2.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-2.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-5.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-1.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-2.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-3.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-4.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-6.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-7.c: Same. * gcc.dg/tree-ssa/builtin-sprintf-warn-9.c: Same. * gcc.dg/tree-ssa/builtin-sprintf.c: Same. Modified: trunk/gcc/ChangeLog trunk/gcc/gimple-ssa-sprintf.c trunk/gcc/testsuite/ChangeLog trunk/gcc/testsuite/gcc.dg/format/pr78569.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-snprintf-warn-2.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-2.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-5.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-1.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-2.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-3.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-4.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-6.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-7.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf-warn-9.c trunk/gcc/testsuite/gcc.dg/tree-ssa/builtin-sprintf.c