(nonzero_bits, case REG): Check POINTERS_EXTEND_UNSIGNED.

(num_sign_bit_copies, case REG): Likewise.

From-SVN: r9303
This commit is contained in:
Richard Kenner 1995-04-03 18:11:26 -04:00
parent 96ec484f7a
commit ff0dbdd176
1 changed files with 17 additions and 1 deletions

View File

@ -6752,10 +6752,18 @@ nonzero_bits (x, mode)
sp_alignment = MIN (PUSH_ROUNDING (1), sp_alignment);
#endif
return nonzero & ~ (sp_alignment - 1);
nonzero &= ~ (sp_alignment - 1);
}
#endif
#ifdef POINTERS_EXTEND_UNSIGNED
/* If pointers extend unsigned and this is a pointer in Pmode, say that
all the bits above ptr_mode are known to be zero. */
if (POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode
&& REGNO_POINTER_FLAG (REGNO (x)))
nonzero &= GET_MODE_MASK (ptr_mode);
#endif
/* If X is a register whose nonzero bits value is current, use it.
Otherwise, if X is a register whose value we can find, use that
value. Otherwise, use the previously-computed global nonzero bits
@ -7091,6 +7099,14 @@ num_sign_bit_copies (x, mode)
{
case REG:
#ifdef POINTERS_EXTEND_UNSIGNED
/* If pointers extend signed and this is a pointer in Pmode, say that
all the bits above ptr_mode are known to be sign bit copies. */
if (! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode && mode == Pmode
&& REGNO_POINTER_FLAG (REGNO (x)))
return GET_MODE_BITSIZE (Pmode) - GET_MODE_BITSIZE (ptr_mode) + 1;
#endif
if (reg_last_set_value[REGNO (x)] != 0
&& reg_last_set_mode[REGNO (x)] == mode
&& (reg_n_sets[REGNO (x)] == 1