Commit fea54805 by Richard Kenner Committed by Richard Kenner

final.c (alter_subreg): If simplify_subreg can't do anything, handle REG…

final.c (alter_subreg): If simplify_subreg can't do anything, handle REG ourselves and abort for others.

	* final.c (alter_subreg): If simplify_subreg can't do anything,
	handle REG ourselves and abort for others.

From-SVN: r47058
parent 768caa28
Thu Nov 15 08:36:39 2001 Richard Kenner <kenner@vlsi1.ultra.nyu.edu>
* final.c (alter_subreg): If simplify_subreg can't do anything,
handle REG ourselves and abort for others.
2001-11-15 Richard Hodson <hodsonr@dionecorp.com>
* config/h8300/h8300.c (dosize): Avoid corrupting R3 in interrupt
......
......@@ -3038,7 +3038,26 @@ alter_subreg (xp)
if (GET_CODE (y) == MEM)
*xp = adjust_address (y, GET_MODE (x), SUBREG_BYTE (x));
else
*xp = simplify_subreg (GET_MODE (x), y, GET_MODE (y), SUBREG_BYTE (x));
{
rtx new = simplify_subreg (GET_MODE (x), y, GET_MODE (y),
SUBREG_BYTE (x));
if (new != 0)
*xp = new;
/* Simplify_subreg can't handle some REG cases, but we have to. */
else if (GET_CODE (y) == REG)
{
REGNO (x) = subreg_hard_regno (x, 1);
PUT_CODE (x, REG);
ORIGINAL_REGNO (x) = ORIGINAL_REGNO (y);
/* This field has a different meaning for REGs and SUBREGs. Make
sure to clear it! */
x->used = 0;
}
else
abort ();
}
return *xp;
}
......
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