* expmed.c (expand_smod_pow2): Fix sign of mask.
authorJ"orn Rennecke <joern.rennecke@superh.com>
Wed, 30 Jun 2004 12:30:00 +0000 (12:30 +0000)
committerJoern Rennecke <amylaar@gcc.gnu.org>
Wed, 30 Jun 2004 12:30:00 +0000 (13:30 +0100)
From-SVN: r83905

gcc/ChangeLog
gcc/expmed.c

index 3d74a3c520ffaff365a2ab6ae4a45761d0fc5010..e18d36ff1a08ba5eb771f47811ab270b3a5bdb69 100644 (file)
@@ -1,3 +1,7 @@
+2004-06-30  J"orn Rennecke <joern.rennecke@superh.com>
+
+       * expmed.c (expand_smod_pow2): Fix sign of mask.
+
 2004-06-29  Diego Novillo  <dnovillo@redhat.com>
 
        * tree-ssa-pre.c (phi_trans_add): Use is_gimple_min_invariant
index bb60ba1e832ef3ce70d94f61d8d70f2a836aa5f6..a2278b9d8c17399e238f71f31fa2a2a6a324cde0 100644 (file)
@@ -3124,7 +3124,7 @@ expand_smod_pow2 (enum machine_mode mode, rtx op0, HOST_WIDE_INT d)
      can avoid an explicit compare operation in the following comparison
      against zero.  */
 
-  mask = (HOST_WIDE_INT) 1 << (GET_MODE_BITSIZE (mode) - 1)
+  mask = (HOST_WIDE_INT) -1 << (GET_MODE_BITSIZE (mode) - 1)
         | (((HOST_WIDE_INT) 1 << logd) - 1);
 
   temp = expand_binop (mode, and_optab, op0, GEN_INT (mask), result,