+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.
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);