aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeoff Keating <geoffk@cygnus.com>2000-07-17 08:41:05 +0000
committerGeoffrey Keating <geoffk@gcc.gnu.org>2000-07-17 08:41:05 +0000
commit3b15076f3646f5421c5476264b2534182553e8aa (patch)
treeb78d162dd68eb8daa39ce376a44c7a1347b5e8cb
parent97f2b269a29f9ff15a3a8dc071dc9a9402055d56 (diff)
downloadgcc-3b15076f3646f5421c5476264b2534182553e8aa.zip
gcc-3b15076f3646f5421c5476264b2534182553e8aa.tar.gz
gcc-3b15076f3646f5421c5476264b2534182553e8aa.tar.bz2
simplify-rtx.c (simplify_relational_operation): Two signed values with equal high words are less/greater than each other if...
* 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. From-SVN: r35080
-rw-r--r--gcc/ChangeLog6
-rw-r--r--gcc/simplify-rtx.c4
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/gcc.c-torture/execute/20000717-2.c11
4 files changed, 23 insertions, 2 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 163e83e..0d81edd 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -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,
diff --git a/gcc/simplify-rtx.c b/gcc/simplify-rtx.c
index 4a7a3a6..7426949 100644
--- a/gcc/simplify-rtx.c
+++ b/gcc/simplify-rtx.c
@@ -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));
}
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 5fd67e3..6c7e322 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -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
index 0000000..4db9032
--- /dev/null
+++ b/gcc/testsuite/gcc.c-torture/execute/20000717-2.c
@@ -0,0 +1,11 @@
+static void
+compare (long long foo)
+{
+ if (foo < 4294967297LL)
+ abort();
+}
+int main(void)
+{
+ compare (8589934591LL);
+ exit (0);
+}