diff options
author | Richard Henderson <rth@cygnus.com> | 1999-08-30 16:08:14 -0700 |
---|---|---|
committer | Richard Henderson <rth@gcc.gnu.org> | 1999-08-30 16:08:14 -0700 |
commit | 963d441197fb558790e40cdb38baa2f2744ba666 (patch) | |
tree | 013dd60e011d28c23dff1ac3c7a808dcd558da6d /gcc | |
parent | 2e419d0961012baea72357ad6198ed2e807cdb4c (diff) | |
download | gcc-963d441197fb558790e40cdb38baa2f2744ba666.zip gcc-963d441197fb558790e40cdb38baa2f2744ba666.tar.gz gcc-963d441197fb558790e40cdb38baa2f2744ba666.tar.bz2 |
flow.c (new_insn_dead_notes): Use sets_reg_or_subreg not mark_set_resources.
* flow.c (new_insn_dead_notes): Use sets_reg_or_subreg not
mark_set_resources.
From-SVN: r28990
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/flow.c | 18 |
2 files changed, 13 insertions, 10 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index c46c920..3b4ffe2 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,8 @@ +Mon Aug 30 16:07:49 1999 Richard Henderson <rth@cygnus.com> + + * flow.c (new_insn_dead_notes): Use sets_reg_or_subreg not + mark_set_resources. + Mon Aug 30 16:36:33 1999 Jeffrey A Law (law@cygnus.com) * invoke.texi: Fix typo. @@ -132,7 +132,6 @@ Boston, MA 02111-1307, USA. */ #include "toplev.h" #include "recog.h" #include "insn-flags.h" -#include "resource.h" #include "obstack.h" #define obstack_chunk_alloc xmalloc @@ -5371,6 +5370,7 @@ new_insn_dead_notes (pat, insn, first, last, orig_first_insn, orig_last_insn) if (tem == orig_last_insn) break; } + /* So it's a new register, presumably only used within this group of insns. Find the last insn in the set of new insns that DEST is referenced in, and add a dead note to it. */ @@ -5393,17 +5393,13 @@ new_insn_dead_notes (pat, insn, first, last, orig_first_insn, orig_last_insn) } else { - struct resources res; rtx curr; + int got_set = 0; - CLEAR_RESOURCE (&res); - for (curr = orig_first_insn; - curr != NULL_RTX; - curr = NEXT_INSN (curr)) + for (curr = orig_first_insn; curr; curr = NEXT_INSN (curr)) { - if (GET_RTX_CLASS (GET_CODE (curr)) == 'i') - mark_set_resources (PATTERN (curr), &res, 0, 0); - if (TEST_HARD_REG_BIT (res.regs, REGNO (dest))) + got_set = sets_reg_or_subreg (curr, dest); + if (got_set) break; if (curr == orig_last_insn) break; @@ -5411,7 +5407,7 @@ new_insn_dead_notes (pat, insn, first, last, orig_first_insn, orig_last_insn) /* In case reg was not used later, it is dead store. add REG_UNUSED note. */ - if (! TEST_HARD_REG_BIT (res.regs, REGNO (dest))) + if (! got_set) { rtx note = rtx_alloc (EXPR_LIST); PUT_REG_NOTE_KIND (note, REG_UNUSED); @@ -5422,9 +5418,11 @@ new_insn_dead_notes (pat, insn, first, last, orig_first_insn, orig_last_insn) } } } + if (insn != first) { rtx set = single_set (insn); + /* If this is a set, scan backwards for a previous reference, and attach a REG_DEAD note to it. But we don't want to do it if the insn is both using and setting the |