diff options
| author | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-30 23:08:14 +0000 |
|---|---|---|
| committer | rth <rth@138bc75d-0d04-0410-961f-82ee72b054a4> | 1999-08-30 23:08:14 +0000 |
| commit | 546810dfde6ce57d3cf5768fabf505680722998a (patch) | |
| tree | 013dd60e011d28c23dff1ac3c7a808dcd558da6d /gcc | |
| parent | 0f44b57f9a114096099cf4584f58dcf20c7a7a85 (diff) | |
| download | ppe42-gcc-546810dfde6ce57d3cf5768fabf505680722998a.tar.gz ppe42-gcc-546810dfde6ce57d3cf5768fabf505680722998a.zip | |
* flow.c (new_insn_dead_notes): Use sets_reg_or_subreg not
mark_set_resources.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@28990 138bc75d-0d04-0410-961f-82ee72b054a4
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 c46c9202454..3b4ffe24112 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 d39c17aa7f9..2c05fe7d590 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 |

