From 1f134bd6d6d6f324c4830c45fa70ab3e49fcd3ef Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 24 Jun 2011 15:26:33 +0000 Subject: [PATCH] Properly handle pointer addition/subtraction in num_sign_bit_copies1. From-SVN: r175383 --- gcc/ChangeLog | 3 ++- gcc/rtlanal.c | 15 --------------- 2 files changed, 2 insertions(+), 16 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 3034c6433ca..f0c2f000eba 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -2,7 +2,8 @@ PR rtl-optimization/49504 * rtlanal.c (nonzero_bits1): Properly handle addition or - subtraction a pointer in Pmode if pointers extend unsigned. + subtraction of a pointer in Pmode if pointers extend unsigned. + (num_sign_bit_copies1): Likewise. 2011-06-24 Martin Jambor diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index e5c045df38e..0be6504a943 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -4605,21 +4605,6 @@ num_sign_bit_copies1 (const_rtx x, enum machine_mode mode, const_rtx known_x, known_x, known_mode, known_ret); result = MAX (1, MIN (num0, num1) - 1); -#ifdef POINTERS_EXTEND_UNSIGNED - /* If pointers extend signed and this is an addition or subtraction - to a pointer in Pmode, all the bits above ptr_mode are known to be - sign bit copies. */ - /* As we do not know which address space the pointer is refering to, - we can do this only if the target does not support different pointer - or address modes depending on the address space. */ - if (target_default_pointer_address_modes_p () - && ! POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode - && (code == PLUS || code == MINUS) - && REG_P (XEXP (x, 0)) && REG_POINTER (XEXP (x, 0))) - result = MAX ((int) (GET_MODE_BITSIZE (Pmode) - - GET_MODE_BITSIZE (ptr_mode) + 1), - result); -#endif return result; case MULT: -- 2.30.2