Patch for PR 9255
authorJames E Wilson <wilson@tuliptree.org>
Thu, 27 Feb 2003 17:46:35 +0000 (09:46 -0800)
committerJim Wilson <wilson@gcc.gnu.org>
Thu, 27 Feb 2003 17:46:35 +0000 (09:46 -0800)
Patch for PR 9255
* combine.c (simplify_comparison): Require integral mode when
permuting SUBREG with AND.

From-SVN: r63514

gcc/ChangeLog
gcc/combine.c

index ebf8468..b836d07 100644 (file)
@@ -1,3 +1,8 @@
+2003-02-27  James E Wilson  <wilson@tuliptree.org>
+
+       * combine.c (simplify_comparison): Require integral mode when
+       permuting SUBREG with AND.
+
 2003-02-27  Steve Ellcey  <sje@cup.hp.com>
 
        * config/ia64/hpux.h (STARTFILE_PREFIX_SPEC): Remove.
index fe5cce5..50b1876 100644 (file)
@@ -11130,6 +11130,9 @@ simplify_comparison (code, pop0, pop1)
             represents the low part, permute the SUBREG and the AND and
             try again.  */
          if (GET_CODE (XEXP (op0, 0)) == SUBREG
+             /* Require an integral mode, to avoid creating something like
+                (AND:SF ...).  */
+             && SCALAR_INT_MODE_P (GET_MODE (SUBREG_REG (XEXP (op0, 0))))
              /* It is unsafe to commute the AND into the SUBREG if the SUBREG
                 is paradoxical and WORD_REGISTER_OPERATIONS is not defined.
                 As originally written the upper bits have a defined value