(nonzero_bits): Don't assume arg pointer has same
authorJim Wilson <wilson@gcc.gnu.org>
Wed, 22 May 1996 21:41:29 +0000 (14:41 -0700)
committerJim Wilson <wilson@gcc.gnu.org>
Wed, 22 May 1996 21:41:29 +0000 (14:41 -0700)
alignment as stack pointer.

From-SVN: r12079

gcc/combine.c

index 3bb8dea9d3ed2a56691d9f1181c1dd7d960b3bba..7ba5c9a2ba60daf097c216a18bd6572dfeea8d6e 100644 (file)
@@ -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))
        {