]> gcc.gnu.org Git - gcc.git/commitdiff
expr.c (do_store_flag): Pass in the correct result type when calling fold_single_bit_...
authorJeff Law <law@redhat.com>
Fri, 4 Jul 2003 22:00:19 +0000 (16:00 -0600)
committerJeff Law <law@gcc.gnu.org>
Fri, 4 Jul 2003 22:00:19 +0000 (16:00 -0600)
        * expr.c (do_store_flag): Pass in the correct result type
        when calling fold_single_bit_test.
        * fold-const.c (fold_single_bit_test): Use result_type for the
        result when folding a sign bit test.

From-SVN: r68940

gcc/ChangeLog
gcc/expr.c
gcc/fold-const.c

index a4c7909c02d65ed9bae4b035f79c3a28307f4b37..970b60a3271be2e7f7b21e6b6eaf7ad90f82109c 100644 (file)
@@ -1,3 +1,10 @@
+2003-07-04  Jeff Law  <law@redhat.com>
+
+       * expr.c (do_store_flag): Pass in the correct result type
+       when calling fold_single_bit_test.
+       * fold-const.c (fold_single_bit_test): Use result_type for the
+       result when folding a sign bit test.
+
 2003-07-04  Neil Booth  <neil@daikokuya.co.uk>
 
        * opts.c (common_handle_options): Negate sense of -falign- switches.
index f735f95515c50cc29c5c46b1613908d0dcc32655..56d733f2d0fcb237b82ccc3fc52cd694a45f0c46 100644 (file)
@@ -9998,9 +9998,12 @@ do_store_flag (tree exp, rtx target, enum machine_mode mode, int only_cheap)
   if ((code == NE || code == EQ)
       && TREE_CODE (arg0) == BIT_AND_EXPR && integer_zerop (arg1)
       && integer_pow2p (TREE_OPERAND (arg0, 1)))
-    return expand_expr (fold_single_bit_test (code == NE ? NE_EXPR : EQ_EXPR,
-                                             arg0, arg1, type), 
-                       target, VOIDmode, EXPAND_NORMAL);
+    {
+      tree type = (*lang_hooks.types.type_for_mode) (mode, unsignedp);
+      return expand_expr (fold_single_bit_test (code == NE ? NE_EXPR : EQ_EXPR,
+                                               arg0, arg1, type), 
+                         target, VOIDmode, EXPAND_NORMAL);
+    }
 
   /* Now see if we are likely to be able to do this.  Return if not.  */
   if (! can_compare_p (code, operand_mode, ccp_store_flag))
index 0524e1dc16e2bb4f393e11de2f8248b0966a0473..64a30f4b82522ea0706fc9a566f67057d908095e 100644 (file)
@@ -4825,7 +4825,7 @@ fold_single_bit_test (code, arg0, arg1, result_type)
       if (arg00 != NULL_TREE)
        {
          tree stype = (*lang_hooks.types.signed_type) (TREE_TYPE (arg00));
-         return fold (build (code == EQ_EXPR ? GE_EXPR : LT_EXPR, type,
+         return fold (build (code == EQ_EXPR ? GE_EXPR : LT_EXPR, result_type,
                              convert (stype, arg00),
                              convert (stype, integer_zero_node)));
        }
This page took 0.093791 seconds and 5 git commands to generate.