OSDN Git Service

* combine.c (simplify_comparison): If simplifying a logical shift
authorrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Mar 2002 10:39:50 +0000 (10:39 +0000)
committerrearnsha <rearnsha@138bc75d-0d04-0410-961f-82ee72b054a4>
Thu, 7 Mar 2002 10:39:50 +0000 (10:39 +0000)
right and compare with constant, force the comparison to unsigned.

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

gcc/ChangeLog
gcc/combine.c

index 555d2ff..6def670 100644 (file)
@@ -1,3 +1,8 @@
+2002-03-07  Richard Earnshaw  <rearnsha@arm.com>
+
+       * combine.c (simplify_comparison): If simplifying a logical shift
+       right and compare with constant, force the comparison to unsigned.
+
 2002-03-07  Aldy Hernandez  <aldyh@redhat.com>
 
         * doc/invoke.texi: Add documentation for -mabi=no-altivec.
index 733ce27..a155555 100644 (file)
@@ -10885,6 +10885,11 @@ simplify_comparison (code, pop0, pop1)
                  || (floor_log2 (const_op) + INTVAL (XEXP (op0, 1))
                      < mode_width)))
            {
+             /* If the shift was logical, then we must make the condition
+                unsigned.  */
+             if (GET_CODE (op0) == LSHIFTRT)
+               code = unsigned_condition (code);
+
              const_op <<= INTVAL (XEXP (op0, 1));
              op1 = GEN_INT (const_op);
              op0 = XEXP (op0, 0);