(nonzero_bits, case REG): Check POINTERS_EXTEND_UNSIGNED.
(num_sign_bit_copies, case REG): Likewise. From-SVN: r9303
This commit is contained in:
parent
96ec484f7a
commit
ff0dbdd176
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue