On Thu, Sep 22, 2022 at 11:04 PM Jakub Jelinek wrote: > > On Thu, Sep 22, 2022 at 06:49:10PM +0200, Aldy Hernandez wrote: > > It has been suggested that if we start bumping numbers by an ULP when > > calculating open ranges (for example the numbers less than 3.0) that > > dumping these will become increasingly harder to read, and instead we > > should opt for the hex representation. I still find the floating > > point representation easier to read for most numbers, but perhaps we > > could have both? > > > > With this patch this is the representation for [15.0, 20.0]: > > > > [frange] float [1.5e+1 (0x0.fp+4), 2.0e+1 (0x0.ap+5)] > > > > Would you find this useful, or should we stick to the hex > > representation only (or something altogether different)? > > I think dumping both is the way to go, but real_to_hexadecimal doesn't > do anything useful with decimal floats, so that part should be > guarded on !DECIMAL_FLOAT_TYPE_P (type). Remember that decimal floats are not supported for frange, but I suppose it's good form to guard the print for when we do. > > Why do you build a tree + dump_generic_node for decimal instead of > real_to_decimal_for_mode ? Honestly, cause I was too lazy. That code is inherited from irange and I figured it's just a dumping routine, but I'm happy to fix it. > The former I think calls: > char string[100]; > real_to_decimal (string, &d, sizeof (string), 0, 1); > so perhaps: > char s[100]; > real_to_decimal_for_mode (s, &r, sizeof (string), 0, 1, TYPE_MODE (type)); > pp_string (pp, "%s", s); > if (!DECIMAL_FLOAT_TYPE_P (type)) > { > real_to_hexadecimal (s, &r, sizeof (s), 0, 1); > pp_printf (pp, " (%s)", s); > } > ? Thanks. I'm retesting the following and will commit if it succeeds since we seem to have overwhelming consensus :). Aldy