diff options
author | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-31 18:45:21 +0000 |
---|---|---|
committer | jakub <jakub@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-03-31 18:45:21 +0000 |
commit | 80563b566ff286b21f0e1080f829cf6a5a6335aa (patch) | |
tree | c2809676f9bd4ac3a167984c72a6de47dc1e7a97 | |
parent | d85b9058d6f26ff14a83752072abd77bbacf1226 (diff) | |
download | gcc-80563b566ff286b21f0e1080f829cf6a5a6335aa.tar.gz |
PR middle-end/6096, middle-end/6098, middle-end/6099
* reorg.c (emit_delay_sequence): Only increment LABEL_NUSES for
CODE_LABELs.
(fill_slots_from_thread): Likewise.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@51668 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/reorg.c | 8 |
2 files changed, 12 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index bf9421784b4..2bf0bef3cf1 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,5 +1,12 @@ 2002-03-31 Jakub Jelinek <jakub@redhat.com> + PR middle-end/6096, middle-end/6098, middle-end/6099 + * reorg.c (emit_delay_sequence): Only increment LABEL_NUSES for + CODE_LABELs. + (fill_slots_from_thread): Likewise. + +2002-03-31 Jakub Jelinek <jakub@redhat.com> + * config/sparc/sparc.c (function_arg_record_value_1): Pass complex floating fields in float regs. (function_arg_record_value_2): Likewise. diff --git a/gcc/reorg.c b/gcc/reorg.c index b1c33f5bf0d..6fc73f1413b 100644 --- a/gcc/reorg.c +++ b/gcc/reorg.c @@ -511,7 +511,8 @@ emit_delay_sequence (insn, list, length) case REG_LABEL: /* Keep the label reference count up to date. */ - LABEL_NUSES (XEXP (note, 0)) ++; + if (GET_CODE (XEXP (note, 0)) == CODE_LABEL) + LABEL_NUSES (XEXP (note, 0)) ++; break; default: @@ -2732,12 +2733,13 @@ fill_slots_from_thread (insn, condition, thread, opposite_thread, likely, temporarily increment the use count on any referenced label lest it be deleted by delete_related_insns. */ note = find_reg_note (trial, REG_LABEL, 0); - if (note) + /* REG_LABEL could be NOTE_INSN_DELETED_LABEL too. */ + if (note && GET_CODE (XEXP (note, 0)) == CODE_LABEL) LABEL_NUSES (XEXP (note, 0))++; delete_related_insns (trial); - if (note) + if (note && GET_CODE (XEXP (note, 0)) == CODE_LABEL) LABEL_NUSES (XEXP (note, 0))--; } else |