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.

Reply via email to