Commit f351bfed by Aldy Hernandez Committed by Aldy Hernandez

* regrename.c (kill_value): Handle subreg's that won't simplify.

From-SVN: r93200
parent eb701deb
2005-01-11 Aldy Hernandez <aldyh@redhat.com>
* regrename.c (kill_value): Handle subreg's that won't simplify.
2005-01-11 Richard Henderson <rth@redhat.com> 2005-01-11 Richard Henderson <rth@redhat.com>
PR target/13366 PR target/13366
......
...@@ -1104,14 +1104,15 @@ kill_value_regno (unsigned int regno, unsigned int nregs, ...@@ -1104,14 +1104,15 @@ kill_value_regno (unsigned int regno, unsigned int nregs,
static void static void
kill_value (rtx x, struct value_data *vd) kill_value (rtx x, struct value_data *vd)
{ {
/* SUBREGS are supposed to have been eliminated by now. But some rtx orig_rtx = x;
ports, e.g. i386 sse, use them to smuggle vector type information
through to instruction selection. Each such SUBREG should simplify,
so if we get a NULL we've done something wrong elsewhere. */
if (GET_CODE (x) == SUBREG) if (GET_CODE (x) == SUBREG)
x = simplify_subreg (GET_MODE (x), SUBREG_REG (x), {
GET_MODE (SUBREG_REG (x)), SUBREG_BYTE (x)); x = simplify_subreg (GET_MODE (x), SUBREG_REG (x),
GET_MODE (SUBREG_REG (x)), SUBREG_BYTE (x));
if (x == NULL_RTX)
x = SUBREG_REG (orig_rtx);
}
if (REG_P (x)) if (REG_P (x))
{ {
unsigned int regno = REGNO (x); unsigned int regno = REGNO (x);
......
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