combine.c (expand_field_assignment): Do not discard SUBREGs while computing nonzero_bits.
authorAlexandre Oliva <oliva@lsd.ic.unicamp.br>
Mon, 10 Jan 2000 19:56:15 +0000 (19:56 +0000)
committerAlexandre Oliva <oliva@gcc.gnu.org>
Mon, 10 Jan 2000 19:56:15 +0000 (19:56 +0000)
* combine.c (expand_field_assignment): Do not discard SUBREGs
while computing nonzero_bits.

From-SVN: r31304

gcc/ChangeLog
gcc/combine.c

index 966ed6217b7533acf2cac356ad05e9b0f01aa0bd..2e9967c554b596a779b44a3f90608a695e812ebb 100644 (file)
@@ -1,3 +1,8 @@
+2000-01-10  Alexandre Oliva  <oliva@lsd.ic.unicamp.br>
+
+       * combine.c (expand_field_assignment): Do not discard SUBREGs
+       while computing nonzero_bits.
+
 2000-01-09  Nick Clifton  <nickc@cygnus.com>
 
        * config/arm/arm.c: Fix compile time warnings about signed vs
index f8be80c24a0d842ef073d3855001eb072ee4ef05..484d6871a85d0c189445827e813e0fe5dd43725e 100644 (file)
@@ -5656,6 +5656,8 @@ expand_field_assignment (x)
       /* A SUBREG between two modes that occupy the same numbers of words
         can be done by moving the SUBREG to the source.  */
       else if (GET_CODE (SET_DEST (x)) == SUBREG
+              /* We need SUBREGs to compute nonzero_bits properly.  */
+              && nonzero_sign_valid
               && (((GET_MODE_SIZE (GET_MODE (SET_DEST (x)))
                     + (UNITS_PER_WORD - 1)) / UNITS_PER_WORD)
                   == ((GET_MODE_SIZE (GET_MODE (SUBREG_REG (SET_DEST (x))))