From: Richard Kenner Date: Sat, 26 Dec 1992 23:11:20 +0000 (-0500) Subject: (gen_lowpart_for_combine): Allow MODE to be wider than a word in X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=eae957a8b8701537efa1af34a619971e5f81827e;p=gcc.git (gen_lowpart_for_combine): Allow MODE to be wider than a word in restricted circumstances. From-SVN: r2914 --- diff --git a/gcc/combine.c b/gcc/combine.c index 331e6ce8d07..360c81e5daf 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -7416,7 +7416,14 @@ gen_lowpart_for_combine (mode, x) if (GET_MODE (x) == mode) return x; - if (GET_MODE_SIZE (mode) > UNITS_PER_WORD) + /* We can only support MODE being wider than a word if X is a + constant integer or has a mode the same size. */ + + if (GET_MODE_SIZE (mode) > UNITS_PER_WORD + && ! ((GET_MODE (x) == VOIDmode + && (GET_CODE (x) == CONST_INT + || GET_CODE (x) == CONST_DOUBLE)) + || GET_MODE_SIZE (GET_MODE (x)) == GET_MODE_SIZE (mode))) return gen_rtx (CLOBBER, GET_MODE (x), const0_rtx); /* X might be a paradoxical (subreg (mem)). In that case, gen_lowpart