diff options
author | Jim Wilson <wilson@gcc.gnu.org> | 1996-05-22 14:41:29 -0700 |
---|---|---|
committer | Jim Wilson <wilson@gcc.gnu.org> | 1996-05-22 14:41:29 -0700 |
commit | ee49a9c7be5b61f467f7049517c9f8ded05e0f39 (patch) | |
tree | b59ca6b695275c1669e8b5ea3cdee2f821aeccd9 | |
parent | bab34d98aa820c0302e2d6c79a375ff3ef719216 (diff) | |
download | gcc-ee49a9c7be5b61f467f7049517c9f8ded05e0f39.zip gcc-ee49a9c7be5b61f467f7049517c9f8ded05e0f39.tar.gz gcc-ee49a9c7be5b61f467f7049517c9f8ded05e0f39.tar.bz2 |
(nonzero_bits): Don't assume arg pointer has same
alignment as stack pointer.
From-SVN: r12079
-rw-r--r-- | gcc/combine.c | 7 |
1 files changed, 6 insertions, 1 deletions
diff --git a/gcc/combine.c b/gcc/combine.c index 3bb8dea..7ba5c9a 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -6974,8 +6974,13 @@ nonzero_bits (x, mode) stack to be momentarily aligned only to that amount, so we pick the least alignment. */ + /* We can't check for arg_pointer_rtx here, because it is not + guaranteed to have as much alignment as the stack pointer. + In particular, in the Irix6 n64 ABI, the stack has 128 bit + alignment but the argument pointer has only 64 bit alignment. */ + if (x == stack_pointer_rtx || x == frame_pointer_rtx - || x == arg_pointer_rtx || x == hard_frame_pointer_rtx + || x == hard_frame_pointer_rtx || (REGNO (x) >= FIRST_VIRTUAL_REGISTER && REGNO (x) <= LAST_VIRTUAL_REGISTER)) { |