https://gcc.gnu.org/bugzilla/show_bug.cgi?id=87390
--- Comment #7 from joseph at codesourcery dot com <joseph at codesourcery dot com> --- On Wed, 26 Sep 2018, vincent-gcc at vinc17 dot net wrote: > > It's 6.3.1.4 for conversions between real floating and integer types that, > > in C99 but not C11, I think requires the resulting value to be > > representable in the resulting real floating type. > > No, it just requires the value to be in the range of values that can be > represented (which is always the case in practice, even though the C standard > does not forbid very long integers). Anyway, this is unrelated to the use of > extra precision and range. It's the "If the value being converted is in the range of values that can be represented but cannot be represented exactly" bit I'm concerned with, in the absence of anything there in C99 (as opposed to in C11) to allow for a wider evaluation format to be used for that purpose - together with the cast operand being integer, not floating-point (see the notes on ambiguous issues in <https://gcc.gnu.org/ml/gcc-patches/2008-11/msg00105.html>). > * 6.3.1.5 is about the behavior of conversion between real floating types, for > given types. (As clarified in C99 TC3 for DR#318.)