Cross compilation can run into trouble for certain machines because
some target machines' assemblers require floating point numbers to be
written as integer constants in certain contexts.
The compiler writes these integer constants by examining the floating
point value as an integer and printing that integer, because this is
simple to write and independent of the details of the floating point
representation. But this does not work if the compiler is running on
a different machine with an incompatible floating point format, or
even a different byte-ordering.
In addition, correct constant folding of floating point values
requires representing them in the target machine's format.
(The C standard does not quite require this, but in practice
it is the only way to win.)
It is now possible to overcome these problems by defining macros such
as REAL_VALUE_TYPE. But doing so is a substantial amount of
work for each target machine.