From 17ac08e2fb86675af83171afbeccfe7936c48709 Mon Sep 17 00:00:00 2001 From: Ian Lance Taylor Date: Wed, 23 Mar 2005 15:59:40 +0000 Subject: [PATCH] final.c (final_scan_insn): Don't remove no-op instructions. * final.c (final_scan_insn): Don't remove no-op instructions. * reload1.c (reload): Remove simple no-op instructions even when not optimizing. From-SVN: r96933 --- gcc/ChangeLog | 6 ++++++ gcc/final.c | 17 ++--------------- gcc/reload1.c | 13 +++++++++++++ 3 files changed, 21 insertions(+), 15 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 223b6738d62..36c07b88756 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +2005-03-23 Ian Lance Taylor + + * 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 PR tree-optimization/20501 diff --git a/gcc/final.c b/gcc/final.c index 9347efe6b47..906e50c00fe 100644 --- a/gcc/final.c +++ b/gcc/final.c @@ -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 diff --git a/gcc/reload1.c b/gcc/reload1.c index 41a2f02f9a7..5e1ab1a27cc 100644 --- a/gcc/reload1.c +++ b/gcc/reload1.c @@ -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 = ®_NOTES (insn); while (*pnote != 0) { -- 2.30.2