diff options
author | Richard Henderson <rth@redhat.com> | 2002-02-04 15:06:04 -0800 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 2002-02-04 15:06:04 -0800 |
commit | ebbb0a63f48a678ebc3b6064a60304aeb7662268 (patch) | |
tree | b65c47de638a18cfb8b68bee82e4ba352c4a8d25 /gcc/combine.c | |
parent | ae4b4a02e878b8ec473d5cabd3b043fe8dfd8940 (diff) | |
download | gcc-ebbb0a63f48a678ebc3b6064a60304aeb7662268.zip gcc-ebbb0a63f48a678ebc3b6064a60304aeb7662268.tar.gz gcc-ebbb0a63f48a678ebc3b6064a60304aeb7662268.tar.bz2 |
combine.c (nonzero_bits): Re-introduce special case for sp/fp/ap wrt REGNO_POINTER_ALIGN.
* combine.c (nonzero_bits): Re-introduce special case for
sp/fp/ap wrt REGNO_POINTER_ALIGN.
From-SVN: r49501
Diffstat (limited to 'gcc/combine.c')
-rw-r--r-- | gcc/combine.c | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 7662b9b..269731f 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -7896,8 +7896,13 @@ nonzero_bits (x, mode) #endif /* Include declared information about alignment of pointers. */ - - if (REG_POINTER (x) && REGNO_POINTER_ALIGN (REGNO (x))) + /* ??? We don't properly preserve REG_POINTER changes across + pointer-to-integer casts, so we can't trust it except for + things that we know must be pointers. See execute/960116-1.c. */ + if ((x == stack_pointer_rtx + || x == frame_pointer_rtx + || x == arg_pointer_rtx) + && REGNO_POINTER_ALIGN (REGNO (x))) { unsigned HOST_WIDE_INT alignment = REGNO_POINTER_ALIGN (REGNO (x)) / BITS_PER_UNIT; |