aboutsummaryrefslogtreecommitdiff
path: root/gcc/combine.c
diff options
context:
space:
mode:
authorSteve Ellcey <sje@cup.hp.com>2001-07-19 23:26:51 +0000
committerRichard Henderson <rth@gcc.gnu.org>2001-07-19 16:26:51 -0700
commit6dd12198d088c1e749b67c9e9a92352b2639265a (patch)
treea9b47fb91c9fd09f19a418557090e5dd7abf596d /gcc/combine.c
parent0248ce054752e353be11bdf52dae7c5f6d2cb7f0 (diff)
downloadgcc-6dd12198d088c1e749b67c9e9a92352b2639265a.zip
gcc-6dd12198d088c1e749b67c9e9a92352b2639265a.tar.gz
gcc-6dd12198d088c1e749b67c9e9a92352b2639265a.tar.bz2
* tm.texi (POINTERS_EXTEND_UNSIGNED) Modify definition.
* optabs.c (can_extend_p) Check HAVE_ptr_extend for a specialized pointer extension instruction. * combine.c (nonzero_bits,num_sign_bit_copies) Likewise. * simplify-rtx.c (simplify_unary_operation) Likewise. * explow.c (convert_memory_address) Check value of POINTERS_EXTEND_UNSIGNED to avoid some conversions when less than zero. * config/ia64/t-hpux (LIBGCC, INSTALL_LIBGCC, MULTILIB_OPTIONS, MULTILIB_DIRNAMES, MULTILIB_MATCHES) Add multilib support. * config/ia64/hpux.h (CPP_SPEC, ASM_SPEC, SUBTARGET_SWITCHES) Add Multilib Support. (POINTERS_EXTEND_UNSIGNED) Define for ILP32 support. * config/ia64/ia64.h (MASK_ILP32, TARGET_ILP32, SUBTARGET_SWITCHES) Add Multilib Support. (POINTER_SIZE, LONG_TYPE_SIZE, MAX_LONG_TYPE_SIZE) Modify for ILP32 support. * config/ia64/ia64.c (rtx_needs_barrier) Add support for addp4. * config/ia64/ia64.md (ptr_extend) New instruction to "swizzle" a 32 bit HP-UX pointer into a 64 bit HP-UX pointer. From-SVN: r44166
Diffstat (limited to 'gcc/combine.c')
-rw-r--r--gcc/combine.c6
1 files changed, 3 insertions, 3 deletions
diff --git a/gcc/combine.c b/gcc/combine.c
index b22dd9b..8658aad 100644
--- a/gcc/combine.c
+++ b/gcc/combine.c
@@ -7905,7 +7905,7 @@ nonzero_bits (x, mode)
switch (code)
{
case REG:
-#ifdef POINTERS_EXTEND_UNSIGNED
+#if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend)
/* 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
@@ -8182,7 +8182,7 @@ nonzero_bits (x, mode)
/* 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. */
- if (POINTERS_EXTEND_UNSIGNED && GET_MODE (x) == Pmode
+ if (POINTERS_EXTEND_UNSIGNED > 0 && GET_MODE (x) == Pmode
&& (code == PLUS || code == MINUS)
&& GET_CODE (XEXP (x, 0)) == REG && REG_POINTER (XEXP (x, 0)))
nonzero &= GET_MODE_MASK (ptr_mode);
@@ -8363,7 +8363,7 @@ num_sign_bit_copies (x, mode)
{
case REG:
-#ifdef POINTERS_EXTEND_UNSIGNED
+#if defined(POINTERS_EXTEND_UNSIGNED) && !defined(HAVE_ptr_extend)
/* 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