OSDN Git Service

* final.c (final_scan_insn): Don't remove no-op instructions.
authorian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Mar 2005 15:59:40 +0000 (15:59 +0000)
committerian <ian@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 23 Mar 2005 15:59:40 +0000 (15:59 +0000)
* reload1.c (reload): Remove simple no-op instructions even when
not optimizing.

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

gcc/ChangeLog
gcc/final.c
gcc/reload1.c

index 223b673..36c07b8 100644 (file)
@@ -1,3 +1,9 @@
+2005-03-23  Ian Lance Taylor  <ian@airs.com>
+
+       * final.c (final_scan_insn): Don't remove no-op instructions.
+       * reload1.c (reload): Remove simple no-op instructions even when
+       not optimizing.
+
 2005-03-23  Dorit Naishlos  <dorit@il.ib.com>
  
        PR tree-optimization/20501
index 9347efe..906e50c 100644 (file)
@@ -1,6 +1,7 @@
 /* Convert RTL to assembler code and output it, for GNU compiler.
    Copyright (C) 1987, 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997,
-   1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc.
+   1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005
+   Free Software Foundation, Inc.
 
 This file is part of GCC.
 
@@ -2267,20 +2268,6 @@ final_scan_insn (rtx insn, FILE *file, int optimize ATTRIBUTE_UNUSED,
          }
 #endif
 
-#ifndef STACK_REGS
-       /* Don't bother outputting obvious no-ops, even without -O.
-          This optimization is fast and doesn't interfere with debugging.
-          Don't do this if the insn is in a delay slot, since this
-          will cause an improper number of delay insns to be written.  */
-       if (final_sequence == 0
-           && prescan >= 0
-           && NONJUMP_INSN_P (insn) && GET_CODE (body) == SET
-           && REG_P (SET_SRC (body))
-           && REG_P (SET_DEST (body))
-           && REGNO (SET_SRC (body)) == REGNO (SET_DEST (body)))
-         break;
-#endif
-
 #ifdef HAVE_cc0
        /* If this is a conditional branch, maybe modify it
           if the cc's are in a nonstandard state
index 41a2f02..5e1ab1a 100644 (file)
@@ -1174,6 +1174,19 @@ reload (rtx first, int global)
          replace_pseudos_in (& XEXP (PATTERN (insn), 0),
                              VOIDmode, PATTERN (insn));
 
+       /* Discard obvious no-ops, even without -O.  This optimization
+          is fast and doesn't interfere with debugging.  */
+       if (NONJUMP_INSN_P (insn)
+           && GET_CODE (PATTERN (insn)) == SET
+           && REG_P (SET_SRC (PATTERN (insn)))
+           && REG_P (SET_DEST (PATTERN (insn)))
+           && (REGNO (SET_SRC (PATTERN (insn)))
+               == REGNO (SET_DEST (PATTERN (insn)))))
+         {
+           delete_insn (insn);
+           continue;
+         }
+
        pnote = &REG_NOTES (insn);
        while (*pnote != 0)
          {