diff options
author | wehle <wehle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-05 05:47:36 +0000 |
---|---|---|
committer | wehle <wehle@138bc75d-0d04-0410-961f-82ee72b054a4> | 2001-12-05 05:47:36 +0000 |
commit | 7e6224aba0b1981132291490d8069812ec0ff519 (patch) | |
tree | ab8e7d78c735260db81c354ad6ada82224f8c855 | |
parent | 70494897e897cfe5a82d808523dfa643bf077e5b (diff) | |
download | gcc-7e6224aba0b1981132291490d8069812ec0ff519.tar.gz |
* emit-rtl.c (set_unique_reg_note): Don't set
a REG_EQUAL or REG_EQUIV note if multiple sets
are present.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@47657 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/emit-rtl.c | 29 |
2 files changed, 30 insertions, 5 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 2dd1ca4856c..1eb92922f70 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,9 @@ +Wed Dec 5 00:42:16 EST 2001 John Wehle (john@feith.com) + + * emit-rtl.c (set_unique_reg_note): Don't set + a REG_EQUAL or REG_EQUIV note if multiple sets + are present. + 2001-12-04 John David Anglin <dave@hiauly1.hia.nrc.ca> * cfgrtl.c (verify_flow_info): Allow jump table data in fallthru if diff --git a/gcc/emit-rtl.c b/gcc/emit-rtl.c index 3c2d8475598..6a30769cecb 100644 --- a/gcc/emit-rtl.c +++ b/gcc/emit-rtl.c @@ -4068,11 +4068,30 @@ set_unique_reg_note (insn, kind, datum) { rtx note = find_reg_note (insn, kind, NULL_RTX); - /* Don't add ASM_OPERAND REG_EQUAL/REG_EQUIV notes. - It serves no useful purpose and breaks eliminate_regs. */ - if ((kind == REG_EQUAL || kind == REG_EQUIV) - && GET_CODE (datum) == ASM_OPERANDS) - return NULL_RTX; + switch (kind) + { + case REG_EQUAL: + case REG_EQUIV: + /* Don't add REG_EQUAL/REG_EQUIV notes if the insn + has multiple sets (some callers assume single_set + means the insn only has one set, when in fact it + means the insn only has one * useful * set). */ + if (GET_CODE (PATTERN (insn)) == PARALLEL && multiple_sets (insn)) + { + if (note) + abort (); + return NULL_RTX; + } + + /* Don't add ASM_OPERAND REG_EQUAL/REG_EQUIV notes. + It serves no useful purpose and breaks eliminate_regs. */ + if (GET_CODE (datum) == ASM_OPERANDS) + return NULL_RTX; + break; + + default: + break; + } if (note) { |