===================================================================
@@ -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,
===================================================================
@@ -42,7 +42,3 @@ MULTILIB_OPTIONS = msoft-float
# We could say "-Werror -Wno-error=type-limits", alas, not all supported
# gcc bootstrap compilers support the latter option.
dwarf2out.o-warn = -Wno-error
-
-# Likewise, java/constants.c:build_constants_constructor has a negative shift
-# count (in never-executed code) due to the small POINTER_SIZE.
-java/constants.o-warn = -Wno-error