From 913d8e132065f31b1594add678621d6b3b573d51 Mon Sep 17 00:00:00 2001 From: "J\"orn Rennecke" Date: Fri, 25 Sep 1998 11:37:01 +0000 Subject: [PATCH] * sh.c (gen_shl_sext): Fix case 5. From-SVN: r22591 --- gcc/ChangeLog | 4 ++++ gcc/config/sh/sh.c | 12 ++++++++++-- 2 files changed, 14 insertions(+), 2 deletions(-) diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 0522454ac195..a7f1b600a223 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +Fri Sep 25 19:30:19 1998 J"orn Rennecke + + * sh.c (gen_shl_sext): Fix case 5. + Fri Sep 25 17:35:23 1998 J"orn Rennecke * reload1.c (reload_combine): Re-add line that got accidentally lost. diff --git a/gcc/config/sh/sh.c b/gcc/config/sh/sh.c index b70d8e1a5874..12f1b74c3175 100644 --- a/gcc/config/sh/sh.c +++ b/gcc/config/sh/sh.c @@ -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);