* simplify-rtx.c (simplify_relational_operation): Two signed
authorgeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Jul 2000 08:41:05 +0000 (08:41 +0000)
committergeoffk <geoffk@138bc75d-0d04-0410-961f-82ee72b054a4>
Mon, 17 Jul 2000 08:41:05 +0000 (08:41 +0000)
values with equal high words are less/greater than each other if
their low words are less/greater when considered as unsigned.

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

gcc/ChangeLog
gcc/simplify-rtx.c
gcc/testsuite/ChangeLog
gcc/testsuite/gcc.c-torture/execute/20000717-2.c [new file with mode: 0644]

index 163e83e..0d81edd 100644 (file)
@@ -1,3 +1,9 @@
+2000-07-17  Geoffrey Keating  <geoffk@cygnus.com>
+
+       * simplify-rtx.c (simplify_relational_operation): Two signed
+       values with equal high words are less/greater than each other if
+       their low words are less/greater when considered as unsigned.
+
 Mon Jul 17 02:37:06 2000  Marc Espie <espie@openbsd.org>
 
        * configure.in (vax-*-openbsd):  Change to new style configuration,
index 4a7a3a6..7426949 100644 (file)
@@ -1792,8 +1792,8 @@ simplify_relational_operation (code, mode, op0, op1)
        }
 
       equal = (h0u == h1u && l0u == l1u);
-      op0lt = (h0s < h1s || (h0s == h1s && l0s < l1s));
-      op1lt = (h1s < h0s || (h1s == h0s && l1s < l0s));
+      op0lt = (h0s < h1s || (h0s == h1s && l0u < l1u));
+      op1lt = (h1s < h0s || (h1s == h0s && l1u < l0u));
       op0ltu = (h0u < h1u || (h0u == h1u && l0u < l1u));
       op1ltu = (h1u < h0u || (h1u == h0u && l1u < l0u));
     }
index 5fd67e3..6c7e322 100644 (file)
@@ -1,3 +1,7 @@
+2000-07-17  Geoffrey Keating  <geoffk@cygnus.com>
+
+       * gcc.c-torture/execute/20000717-2.c: New test.
+
 2000-07-17  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * gcc.dg/c90-digraph-1.c, gcc.dg/c94-digraph.c,
diff --git a/gcc/testsuite/gcc.c-torture/execute/20000717-2.c b/gcc/testsuite/gcc.c-torture/execute/20000717-2.c
new file mode 100644 (file)
index 0000000..4db9032
--- /dev/null
@@ -0,0 +1,11 @@
+static void
+compare (long long foo)
+{
+  if (foo < 4294967297LL)
+    abort();
+}
+int main(void)
+{
+  compare (8589934591LL);
+  exit (0);
+}