re PR c++/33067 (Awkward long decimal expansion for double literal in error.)
2011-10-11 Paolo Carlini <paolo.carlini@oracle.com> PR c++/33067 * c-family/c-pretty-print.c (pp_c_floating_constant): Output max_digits10 (in the ISO C++ WG N1822 sense) decimal digits. From-SVN: r179797
This commit is contained in:
parent
d42c1fcaf4
commit
7bc3074123
@ -1,3 +1,9 @@
|
|||||||
|
2011-10-11 Paolo Carlini <paolo.carlini@oracle.com>
|
||||||
|
|
||||||
|
PR c++/33067
|
||||||
|
* c-family/c-pretty-print.c (pp_c_floating_constant): Output
|
||||||
|
max_digits10 (in the ISO C++ WG N1822 sense) decimal digits.
|
||||||
|
|
||||||
2011-10-11 Richard Sandiford <richard.sandiford@linaro.org>
|
2011-10-11 Richard Sandiford <richard.sandiford@linaro.org>
|
||||||
|
|
||||||
* modulo-sched.c: Fix comment typo. Mention the possibility
|
* modulo-sched.c: Fix comment typo. Mention the possibility
|
||||||
|
@ -1018,8 +1018,20 @@ pp_c_enumeration_constant (c_pretty_printer *pp, tree e)
|
|||||||
static void
|
static void
|
||||||
pp_c_floating_constant (c_pretty_printer *pp, tree r)
|
pp_c_floating_constant (c_pretty_printer *pp, tree r)
|
||||||
{
|
{
|
||||||
|
const struct real_format *fmt
|
||||||
|
= REAL_MODE_FORMAT (TYPE_MODE (TREE_TYPE (r)));
|
||||||
|
|
||||||
|
REAL_VALUE_TYPE floating_cst = TREE_REAL_CST (r);
|
||||||
|
bool is_decimal = floating_cst.decimal;
|
||||||
|
|
||||||
|
/* See ISO C++ WG N1822. Note: The fraction 643/2136 approximates
|
||||||
|
log10(2) to 7 significant digits. */
|
||||||
|
int max_digits10 = 2 + (is_decimal ? fmt->p : fmt->p * 643L / 2136);
|
||||||
|
|
||||||
real_to_decimal (pp_buffer (pp)->digit_buffer, &TREE_REAL_CST (r),
|
real_to_decimal (pp_buffer (pp)->digit_buffer, &TREE_REAL_CST (r),
|
||||||
sizeof (pp_buffer (pp)->digit_buffer), 0, 1);
|
sizeof (pp_buffer (pp)->digit_buffer),
|
||||||
|
max_digits10, 1);
|
||||||
|
|
||||||
pp_string (pp, pp_buffer(pp)->digit_buffer);
|
pp_string (pp, pp_buffer(pp)->digit_buffer);
|
||||||
if (TREE_TYPE (r) == float_type_node)
|
if (TREE_TYPE (r) == float_type_node)
|
||||||
pp_character (pp, 'f');
|
pp_character (pp, 'f');
|
||||||
|
Loading…
Reference in New Issue
Block a user