* sh.c (gen_shl_sext): Fix case 5.

From-SVN: r22591
This commit is contained in:
J"orn Rennecke 1998-09-25 11:37:01 +00:00 committed by Joern Rennecke
parent a0e7ad89ab
commit 913d8e1320
2 changed files with 14 additions and 2 deletions

View File

@ -1,3 +1,7 @@
Fri Sep 25 19:30:19 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* sh.c (gen_shl_sext): Fix case 5.
Fri Sep 25 17:35:23 1998 J"orn Rennecke <amylaar@cygnus.co.uk>
* reload1.c (reload_combine): Re-add line that got accidentally lost.

View File

@ -1600,8 +1600,16 @@ gen_shl_sext (dest, left_rtx, size_rtx, source)
case 5:
{
int i = 16 - size;
emit_insn (gen_shl_sext_ext (dest, source, GEN_INT (16 - insize),
GEN_INT (16)));
if (! rtx_equal_function_value_matters
&& ! reload_in_progress && ! reload_completed)
emit_insn (gen_shl_sext_ext (dest, source, left_rtx, size_rtx));
else
{
operands[0] = dest;
operands[2] = GEN_INT (16 - insize);
gen_shifty_hi_op (ASHIFT, operands);
emit_insn (gen_extendhisi2 (dest, gen_lowpart (HImode, dest)));
}
/* Don't use gen_ashrsi3 because it generates new pseudos. */
while (--i >= 0)
gen_ashift (ASHIFTRT, 1, dest);