===================================================================
@@ -534,14 +534,16 @@ build_constants_constructor (void)
case CONSTANT_InterfaceMethodref:
{
unsigned HOST_WIDE_INT temp = outgoing_cpool->data[i].w;
+ int big_endian_correction;
/* Make sure that on a big-endian machine with 64-bit
pointers this 32-bit jint appears in the first word.
FIXME: This is a kludge. The field we're initializing is
not a scalar but a union, and that's how we should
represent it in the compiler. We should fix this. */
- if (BYTES_BIG_ENDIAN && POINTER_SIZE > 32)
- temp <<= POINTER_SIZE - 32;
+ big_endian_correction = POINTER_SIZE - 32;
+ if (BYTES_BIG_ENDIAN && big_endian_correction > 0)
+ temp <<= big_endian_correction;
CONSTRUCTOR_PREPEND_VALUE (t, get_tag_node (outgoing_cpool->tags[i]));
CONSTRUCTOR_PREPEND_VALUE (d,