Commit d74e9142 by Stephane Carrez Committed by Stephane Carrez

m68hc11.c (m68hc11_gen_highpart): Don't use gen_highpart.

	* config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Don't use
	gen_highpart.

From-SVN: r44206
parent 1c432a87
2001-07-20 Stephane Carrez <Stephane.Carrez@worldnet.fr>
* config/m68hc11/m68hc11.c (m68hc11_gen_highpart): Don't use
gen_highpart.
2001-07-20 Daniel Berlin <dan@cgsoftware.com> 2001-07-20 Daniel Berlin <dan@cgsoftware.com>
* params.def: Change default max inline insns to 100. * params.def: Change default max inline insns to 100.
......
...@@ -1922,18 +1922,30 @@ m68hc11_gen_highpart (mode, x) ...@@ -1922,18 +1922,30 @@ m68hc11_gen_highpart (mode, x)
} }
/* gen_highpart crashes when it is called with a SUBREG. */ /* gen_highpart crashes when it is called with a SUBREG. */
if (GET_CODE (x) == SUBREG && SUBREG_BYTE (x) != 0) if (GET_CODE (x) == SUBREG)
{ {
return gen_rtx (SUBREG, mode, XEXP (x, 0), XEXP (x, 1)); return gen_rtx (SUBREG, mode, XEXP (x, 0), XEXP (x, 1));
} }
x = gen_highpart (mode, x); if (GET_CODE (x) == REG)
{
if (REGNO (x) < FIRST_PSEUDO_REGISTER)
return gen_rtx (REG, mode, REGNO (x));
else
return gen_rtx_SUBREG (mode, x, 0);
}
/* Return a different rtx to avoid to share it in several insns
(when used by a split pattern). Sharing addresses within
a MEM breaks the Z register replacement (and reloading). */
if (GET_CODE (x) == MEM) if (GET_CODE (x) == MEM)
x = copy_rtx (x); {
return x; x = change_address (x, mode, 0);
/* Return a different rtx to avoid to share it in several insns
(when used by a split pattern). Sharing addresses within
a MEM breaks the Z register replacement (and reloading). */
if (GET_CODE (x) == MEM)
x = copy_rtx (x);
return x;
}
abort ();
} }
......
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