Commit 695e4773 by Graham Stott Committed by Graham Stott

regrename.c (scan_rtx_rtx): Skip to the next chain on encountering a terminated chain.


        * regrename.c (scan_rtx_rtx): Skip to the next chain on
        encountering a terminated chain.

From-SVN: r37473
parent 928c4ba2
2000-11-15 Graham Stott <grahams@redhat.com>
* regrename.c (scan_rtx_rtx): Skip to the next chain on
encountering a terminated chain.
2000-11-14 Mark Mitchell <mark@codesourcery.com> 2000-11-14 Mark Mitchell <mark@codesourcery.com>
* configure.in: Move check for V3 above check for C++ header-file * configure.in: Move check for V3 above check for C++ header-file
......
...@@ -307,6 +307,18 @@ scan_rtx_reg (insn, loc, class, action, type) ...@@ -307,6 +307,18 @@ scan_rtx_reg (insn, loc, class, action, type)
for (p = &open_chains; *p;) for (p = &open_chains; *p;)
{ {
struct du_chain *this = *p; struct du_chain *this = *p;
/* Check if the chain has been terminated if it has then skip to
the next chain.
This can happen when we've already appended the location to
the chain in Step 3, but are trying to hide in-out operands
from terminate_write in Step 5. */
if (*this->loc == cc0_rtx)
p = &this->next_chain;
else
{
int regno = REGNO (*this->loc); int regno = REGNO (*this->loc);
int nregs = HARD_REGNO_NREGS (regno, GET_MODE (*this->loc)); int nregs = HARD_REGNO_NREGS (regno, GET_MODE (*this->loc));
int exact_match = (regno == this_regno && nregs == this_nregs); int exact_match = (regno == this_regno && nregs == this_nregs);
...@@ -364,6 +376,7 @@ scan_rtx_reg (insn, loc, class, action, type) ...@@ -364,6 +376,7 @@ scan_rtx_reg (insn, loc, class, action, type)
else else
p = &this->next_chain; p = &this->next_chain;
} }
}
} }
/* Adapted from find_reloads_address_1. CLASS is INDEX_REG_CLASS or /* Adapted from find_reloads_address_1. CLASS is INDEX_REG_CLASS or
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment