From 5ac6c59eddf13e25a8d0ad26611d8ba58eedbf8f Mon Sep 17 00:00:00 2001 From: "H.J. Lu" Date: Fri, 24 Jun 2011 13:41:40 +0000 Subject: [PATCH] Properly handle pointer addition/subtraction. 2011-06-24 H.J. Lu PR rtl-optimization/49504 * rtlanal.c (nonzero_bits1): Properly handle addition or subtraction a pointer in Pmode if pointers extend unsigned. From-SVN: r175377 --- gcc/ChangeLog | 6 ++++++ gcc/rtlanal.c | 14 -------------- 2 files changed, 6 insertions(+), 14 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index fa88db30b28..3034c6433ca 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2011-06-24 H.J. Lu + + PR rtl-optimization/49504 + * rtlanal.c (nonzero_bits1): Properly handle addition or + subtraction a pointer in Pmode if pointers extend unsigned. + 2011-06-24 Martin Jambor PR tree-optimizations/49516 diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c index b52957d4cae..e5c045df38e 100644 --- a/gcc/rtlanal.c +++ b/gcc/rtlanal.c @@ -4134,20 +4134,6 @@ nonzero_bits1 (const_rtx x, enum machine_mode mode, const_rtx known_x, if (result_low > 0) nonzero &= ~(((unsigned HOST_WIDE_INT) 1 << result_low) - 1); - -#ifdef POINTERS_EXTEND_UNSIGNED - /* If pointers extend unsigned and this is an addition or subtraction - to a pointer in Pmode, all the bits above ptr_mode are known to be - zero. */ - /* 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 > 0 && GET_MODE (x) == Pmode - && (code == PLUS || code == MINUS) - && REG_P (XEXP (x, 0)) && REG_POINTER (XEXP (x, 0))) - nonzero &= GET_MODE_MASK (ptr_mode); -#endif } break; -- 2.30.2