* regmove.c (regmove_optimize): Suppress the optimization for
authorjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 May 2001 20:08:04 +0000 (20:08 +0000)
committerjakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 11 May 2001 20:08:04 +0000 (20:08 +0000)
unchanging destination register.  Add comment above function.

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

gcc/ChangeLog
gcc/regmove.c

index 9814720..04297a6 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-11  Jakub Jelinek  <jakub@redhat.com>
+
+       * regmove.c (regmove_optimize): Suppress the optimization for
+       unchanging destination register.  Add comment above function.
+
 2001-05-11  Zack Weinberg  <zackw@stanford.edu>
 
        * Makefile.in: Exterminate all references to assert.h.
index a151d6f..910c422 100644 (file)
@@ -1060,6 +1060,12 @@ fixup_match_2 (insn, dst, src, offset, regmove_dump_file)
   return 0;
 }
 
+/* Main entry for the register move optimization.
+   F is the first instruction.
+   NREGS is one plus the highest pseudo-reg number used in the instruction.
+   REGMOVE_DUMP_FILE is a stream for output of a trace of actions taken
+   (or 0 if none should be output).  */
+
 void
 regmove_optimize (f, nregs, regmove_dump_file)
      rtx f;
@@ -1282,7 +1288,8 @@ regmove_optimize (f, nregs, regmove_dump_file)
 
              if (GET_CODE (dst) != REG
                  || REGNO (dst) < FIRST_PSEUDO_REGISTER
-                 || REG_LIVE_LENGTH (REGNO (dst)) < 0)
+                 || REG_LIVE_LENGTH (REGNO (dst)) < 0
+                 || RTX_UNCHANGING_P (dst))
                continue;
 
              /* If the operands already match, then there is nothing to do. */