re PR tree-optimization/55052 (vect-widening tests are failing and giving wrong results)
authorRichard Sandiford <rdsandiford@googlemail.com>
Wed, 28 Nov 2012 21:45:03 +0000 (21:45 +0000)
committerRichard Sandiford <rsandifo@gcc.gnu.org>
Wed, 28 Nov 2012 21:45:03 +0000 (21:45 +0000)
gcc/
PR rtl-optimization/55052
* simplify-rtx.c (simplify_subreg): Restore SCALAR_INT_MODE_P check.

From-SVN: r193909

gcc/ChangeLog
gcc/simplify-rtx.c

index 83edb9b196507e659fd13e13685979c6fca9d5b2..b4febea6753a342d02d91d296c5ae1699c6ff1e2 100644 (file)
@@ -1,3 +1,8 @@
+2012-11-28  Richard Sandiford  <rdsandiford@googlemail.com>
+
+       PR rtl-optimization/55052
+       * simplify-rtx.c (simplify_subreg): Restore SCALAR_INT_MODE_P check.
+
 2012-11-28  David Edelsohn  <dje.gcc@gmail.com>
 
        * target.def (use_blocks_for_decl_p): New hook.
index 46d9e8a1ede4df07a28bc3f4475c848160f7cc05..f26f0083cf6db2d9dd974f35da7e7e68c204839e 100644 (file)
@@ -5875,7 +5875,7 @@ simplify_subreg (enum machine_mode outermode, rtx op,
 
   /* A SUBREG resulting from a zero extension may fold to zero if
      it extracts higher bits that the ZERO_EXTEND's source bits.  */
-  if (GET_CODE (op) == ZERO_EXTEND)
+  if (GET_CODE (op) == ZERO_EXTEND && SCALAR_INT_MODE_P (innermode))
     {
       unsigned int bitpos = subreg_lsb_1 (outermode, innermode, byte);
       if (bitpos >= GET_MODE_PRECISION (GET_MODE (XEXP (op, 0))))