aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@cygnus.com>1999-08-30 16:08:14 -0700
committerRichard Henderson <rth@gcc.gnu.org>1999-08-30 16:08:14 -0700
commit963d441197fb558790e40cdb38baa2f2744ba666 (patch)
tree013dd60e011d28c23dff1ac3c7a808dcd558da6d /gcc
parent2e419d0961012baea72357ad6198ed2e807cdb4c (diff)
downloadgcc-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/ChangeLog5
-rw-r--r--gcc/flow.c18
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.
diff --git a/gcc/flow.c b/gcc/flow.c
index d39c17a..2c05fe7 100644
--- a/gcc/flow.c
+++ b/gcc/flow.c
@@ -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