gcc/
authorrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Nov 2012 21:45:03 +0000 (21:45 +0000)
committerrsandifo <rsandifo@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 28 Nov 2012 21:45:03 +0000 (21:45 +0000)
PR rtl-optimization/55052
* simplify-rtx.c (simplify_subreg): Restore SCALAR_INT_MODE_P check.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@193909 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/ChangeLog
gcc/simplify-rtx.c

index 83edb9b..b4febea 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 46d9e8a..f26f008 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))))