regrename.c (scan_rtx_reg): Terminate the chain rather than abort on mark_read with NO_REGS.
* regrename.c (scan_rtx_reg): Terminate the chain rather than abort on mark_read with NO_REGS. From-SVN: r37644
This commit is contained in:
parent
4dc1635549
commit
a125d8555a
|
@ -1,3 +1,8 @@
|
||||||
|
2000-11-21 Richard Henderson <rth@redhat.com>
|
||||||
|
|
||||||
|
* regrename.c (scan_rtx_reg): Terminate the chain rather than
|
||||||
|
abort on mark_read with NO_REGS.
|
||||||
|
|
||||||
2000-11-21 Mike Stump <mrs@wrs.com>
|
2000-11-21 Mike Stump <mrs@wrs.com>
|
||||||
|
|
||||||
* fixinc/fixtests.c (TEST_FOR_FIX_PROC_HEAD): Fix to allow
|
* fixinc/fixtests.c (TEST_FOR_FIX_PROC_HEAD): Fix to allow
|
||||||
|
|
|
@ -325,14 +325,22 @@ scan_rtx_reg (insn, loc, class, action, type)
|
||||||
|
|
||||||
if (regno + nregs <= this_regno
|
if (regno + nregs <= this_regno
|
||||||
|| this_regno + this_nregs <= regno)
|
|| this_regno + this_nregs <= regno)
|
||||||
|
{
|
||||||
p = &this->next_chain;
|
p = &this->next_chain;
|
||||||
else if (action == mark_read)
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (action == mark_read)
|
||||||
{
|
{
|
||||||
if (! exact_match)
|
if (! exact_match)
|
||||||
abort ();
|
abort ();
|
||||||
if (class == NO_REGS)
|
|
||||||
abort ();
|
|
||||||
|
|
||||||
|
/* ??? Class NO_REGS can happen if the md file makes use of
|
||||||
|
EXTRA_CONSTRAINTS to match registers. Which is arguably
|
||||||
|
wrong, but there we are. Since we know not what this may
|
||||||
|
be replaced with, terminate the chain. */
|
||||||
|
if (class != NO_REGS)
|
||||||
|
{
|
||||||
this = (struct du_chain *)
|
this = (struct du_chain *)
|
||||||
obstack_alloc (&rename_obstack, sizeof (struct du_chain));
|
obstack_alloc (&rename_obstack, sizeof (struct du_chain));
|
||||||
this->next_use = *p;
|
this->next_use = *p;
|
||||||
|
@ -344,7 +352,9 @@ scan_rtx_reg (insn, loc, class, action, type)
|
||||||
*p = this;
|
*p = this;
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
else if (action != terminate_overlapping_read || ! exact_match)
|
}
|
||||||
|
|
||||||
|
if (action != terminate_overlapping_read || ! exact_match)
|
||||||
{
|
{
|
||||||
struct du_chain *next = this->next_chain;
|
struct du_chain *next = this->next_chain;
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue