OSDN Git Service

* jump.c (jump_optimize): When simplifying noop moves and
authordavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Jul 1998 02:20:07 +0000 (02:20 +0000)
committerdavem <davem@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 20 Jul 1998 02:20:07 +0000 (02:20 +0000)
PUSH_ROUNDING, fix thinko so we use same criterion for identifying
the PUSHes to rewrite in second loop as we did in the first.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@21302 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/jump.c

index 09417a6..b2867b1 100644 (file)
@@ -1,3 +1,9 @@
+Mon Jul 20 01:11:11 1998  David S. Miller  <davem@pierdol.cobaltmicro.com>
+
+       * jump.c (jump_optimize): When simplifying noop moves and
+       PUSH_ROUNDING, fix thinko so we use same criterion for identifying
+       the PUSHes to rewrite in second loop as we did in the first.
+
 Sun Jul 19 08:23:53 1998  Kaveh R. Ghazi  <ghazi@caip.rutgers.edu>
 
        * cplus-dem.c (demangle_nested_args): Make function definition
index fce3dc0..dfc4ae6 100644 (file)
@@ -402,9 +402,14 @@ jump_optimize (f, cross_jump, noop_moves, after_regscan)
                    if (GET_CODE (p) != INSN)
                      break;
                    pbody = PATTERN (p);
-                   if (GET_CODE (pbody) == SET)
+                   if (GET_CODE (pbody) != SET)
                      break;
                    dest = SET_DEST (pbody);
+                   /* Allow a no-op move between the adjust and the push.  */
+                   if (GET_CODE (dest) == REG
+                       && GET_CODE (SET_SRC (pbody)) == REG
+                       && REGNO (dest) == REGNO (SET_SRC (pbody)))
+                     continue;
                    if (! (GET_CODE (dest) == MEM
                           && GET_CODE (XEXP (dest, 0)) == POST_INC
                           && XEXP (XEXP (dest, 0), 0) == stack_pointer_rtx))