mirror of
git://gcc.gnu.org/git/gcc.git
synced 2025-01-24 22:34:26 +08:00
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
This commit is contained in:
parent
768caa286d
commit
fea54805d1
@ -1,3 +1,8 @@
|
||||
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
|
||||
|
21
gcc/final.c
21
gcc/final.c
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user