From 101c1a3d93648d82511f33d826f1c64d33371463 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 19 Feb 1997 11:18:06 -0700 Subject: [PATCH] combine.c (find_split_point): Don't turn a SIGN_EXTEND into a series of shifts if... * combine.c (find_split_point): Don't turn a SIGN_EXTEND into a series of shifts if either mode is a partial integer mode. From-SVN: r13665 --- gcc/combine.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/gcc/combine.c b/gcc/combine.c index 2265eb3e537..6a6ebb4dbfa 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -2699,6 +2699,14 @@ find_split_point (loc, insn) case SIGN_EXTEND: inner = XEXP (SET_SRC (x), 0); + + /* We can't optimize if either mode is a partial integer + mode as we don't know how many bits are significant + in those modes. */ + if (GET_MODE_CLASS (GET_MODE (inner)) == MODE_PARTIAL_INT + || GET_MODE_CLASS (GET_MODE (SET_SRC (x))) == MODE_PARTIAL_INT) + break; + pos = 0; len = GET_MODE_BITSIZE (GET_MODE (inner)); unsignedp = 0; -- 2.30.2