re PR target/21501 (ICE in extract_insn, at recog.c:2082)
PR target/21501 * arm.c (arm_gen_constant): Sign-extend intermediate values when synthesizing a constant of the difference of two immediates. From-SVN: r99608
This commit is contained in:
parent
81632f1168
commit
fa2c88a05b
2 changed files with 9 additions and 3 deletions
|
@ -1,3 +1,9 @@
|
|||
2005-05-12 Richard Earnshaw <richard.earnshaw@arm.com>
|
||||
|
||||
PR target/21501
|
||||
* arm.c (arm_gen_constant): Sign-extend intermediate values when
|
||||
synthesizing a constant of the difference of two immediates.
|
||||
|
||||
2005-05-12 Richard Earnshaw <richard.earnshaw@arm.com>
|
||||
|
||||
* arm/vfp.md (negsf2_vfp): Add alternative using integer registers.
|
||||
|
|
|
@ -1920,8 +1920,8 @@ arm_gen_constant (enum rtx_code code, enum machine_mode mode, rtx cond,
|
|||
{
|
||||
int topshift = clear_sign_bit_copies & ~1;
|
||||
|
||||
temp1 = ((remainder + (0x00800000 >> topshift))
|
||||
& (0xff000000 >> topshift));
|
||||
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.
|
||||
|
@ -1930,7 +1930,7 @@ arm_gen_constant (enum rtx_code code, enum machine_mode mode, rtx cond,
|
|||
if (temp1 == 0 && topshift != 0)
|
||||
temp1 = 0x80000000 >> (topshift - 1);
|
||||
|
||||
temp2 = temp1 - remainder;
|
||||
temp2 = ARM_SIGN_EXTEND (temp1 - remainder);
|
||||
|
||||
if (const_ok_for_arm (temp2))
|
||||
{
|
||||
|
|
Loading…
Add table
Reference in a new issue