diff options
author | Ian Lance Taylor <ian@airs.com> | 2005-03-23 15:59:40 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2005-03-23 15:59:40 +0000 |
commit | 17ac08e2fb86675af83171afbeccfe7936c48709 (patch) | |
tree | 1d2e8d636e2d097fbbf7d8d91bff95a8cd0968e0 /gcc/reload1.c | |
parent | 0e6b0dafa31335e74c230356f71d0356089a3a3f (diff) | |
download | gcc-17ac08e2fb86675af83171afbeccfe7936c48709.zip gcc-17ac08e2fb86675af83171afbeccfe7936c48709.tar.gz gcc-17ac08e2fb86675af83171afbeccfe7936c48709.tar.bz2 |
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
Diffstat (limited to 'gcc/reload1.c')
-rw-r--r-- | gcc/reload1.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/gcc/reload1.c b/gcc/reload1.c index 41a2f02..5e1ab1a 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) { |