From: Richard Kenner Date: Wed, 5 May 1993 21:32:10 +0000 (-0400) Subject: (num_sign_bit_copies, case SUBREG): Properly compute the number of X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=dc3e17add0fcce3988cd981e161aa983139743e9;p=gcc.git (num_sign_bit_copies, case SUBREG): Properly compute the number of sign bit copies of SUBREGs of promoted objects. From-SVN: r4341 --- diff --git a/gcc/combine.c b/gcc/combine.c index 9e14ea694d1..cd5936d1e9b 100644 --- a/gcc/combine.c +++ b/gcc/combine.c @@ -1,5 +1,5 @@ /* Optimize by combining instructions for GNU compiler. - Copyright (C) 1987, 1988, 1992 Free Software Foundation, Inc. + Copyright (C) 1987, 1988, 1992, 1993 Free Software Foundation, Inc. This file is part of GNU CC. @@ -6519,8 +6519,8 @@ num_sign_bit_copies (x, mode) high-order bits are known to be sign bit copies. */ if (SUBREG_PROMOTED_VAR_P (x) && ! SUBREG_PROMOTED_UNSIGNED_P (x)) - return (GET_MODE_BITSIZE (mode) - GET_MODE_BITSIZE (GET_MODE (x)) - + num_sign_bit_copies (SUBREG_REG (x), GET_MODE (x))); + return MAX (bitwidth - GET_MODE_BITSIZE (GET_MODE (x)) + 1, + num_sign_bit_copies (SUBREG_REG (x), mode)); /* For a smaller object, just ignore the high bits. */ if (bitwidth <= GET_MODE_BITSIZE (GET_MODE (SUBREG_REG (x))))