aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorH.J. Lu <hongjiu.lu@intel.com>2011-06-24 15:26:33 +0000
committerH.J. Lu <hjl@gcc.gnu.org>2011-06-24 08:26:33 -0700
commit1f134bd6d6d6f324c4830c45fa70ab3e49fcd3ef (patch)
tree85efd3579c1dba862f15e1dcaa9dcc37c41aa6a0 /gcc
parent89f920259c9298b5d5d64b5ec57a3fb8f9046605 (diff)
downloadgcc-1f134bd6d6d6f324c4830c45fa70ab3e49fcd3ef.zip
gcc-1f134bd6d6d6f324c4830c45fa70ab3e49fcd3ef.tar.gz
gcc-1f134bd6d6d6f324c4830c45fa70ab3e49fcd3ef.tar.bz2
Properly handle pointer addition/subtraction in num_sign_bit_copies1.
From-SVN: r175383
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog3
-rw-r--r--gcc/rtlanal.c15
2 files changed, 2 insertions, 16 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 3034c643..f0c2f00 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 <mjambor@suse.cz>
diff --git a/gcc/rtlanal.c b/gcc/rtlanal.c
index e5c045d..0be6504 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: