On 06.08.2010 15:53, Joseph S. Myers wrote:
On Fri, 6 Aug 2010, Christophe LYON wrote:
From my brief investigation, I think that the problem is due to the fact that
struct real_value uses the 'long' type for the 'sig' field, while the
computation of REAL_WIDTH relies on HOST_BITS_PER_WIDE_INT.
No, this is not a problem; it's fine to use long in the representation but
HOST_WIDE_INT when stored in an rtx. The issue appears rather to be with
#define REAL_VALUE_TYPE_SIZE (SIGNIFICAND_BITS + 32)
where with 64-bit long there are going to be 32 bits of padding in this
structure that are not allowed for. Try changing that 32 to
HOST_BITS_PER_LONG.
I does not fix my problem: HOST_BITS_PER_LONG is still 32. Remember, my
host is ARM, my target is ARM, but my build machine is x86_64, which
makes the 'sig' field of 'real_value' an array of 5 * 64 bits, while
SIGSZ, SIGNIFICAND_BITS and REAL_VALUE_TYPE_SIZE are all defined wrt to
HOST_BITS_PER_LONG, which is 32.
Christophe.