Index: config/arm/arm.c =================================================================== RCS file: /cvs/gcc/gcc/gcc/config/arm/arm.c,v retrieving revision 1.456 diff -p -r1.456 arm.c *** config/arm/arm.c 9 May 2005 22:09:47 -0000 1.456 --- config/arm/arm.c 12 May 2005 10:31:22 -0000 *************** arm_gen_constant (enum rtx_code code, en *** 1920,1927 **** { int topshift = clear_sign_bit_copies & ~1; ! temp1 = ((remainder + (0x00800000 >> topshift)) ! & (0xff000000 >> topshift)); /* If temp1 is zero, then that means the 9 most significant bits of remainder were 1 and we've caused it to overflow. --- 1920,1927 ---- { int topshift = clear_sign_bit_copies & ~1; ! temp1 = ARM_SIGN_EXTEND ((remainder + (0x00800000 >> topshift)) ! & (0xff000000 >> topshift)); /* If temp1 is zero, then that means the 9 most significant bits of remainder were 1 and we've caused it to overflow. *************** arm_gen_constant (enum rtx_code code, en *** 1930,1936 **** if (temp1 == 0 && topshift != 0) temp1 = 0x80000000 >> (topshift - 1); ! temp2 = temp1 - remainder; if (const_ok_for_arm (temp2)) { --- 1930,1936 ---- if (temp1 == 0 && topshift != 0) temp1 = 0x80000000 >> (topshift - 1); ! temp2 = ARM_SIGN_EXTEND (temp1 - remainder); if (const_ok_for_arm (temp2)) {