diff options
author | Geoff Keating <geoffk@cygnus.com> | 2000-07-17 08:41:05 +0000 |
---|---|---|
committer | Geoffrey Keating <geoffk@gcc.gnu.org> | 2000-07-17 08:41:05 +0000 |
commit | 3b15076f3646f5421c5476264b2534182553e8aa (patch) | |
tree | b78d162dd68eb8daa39ce376a44c7a1347b5e8cb | |
parent | 97f2b269a29f9ff15a3a8dc071dc9a9402055d56 (diff) | |
download | gcc-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/ChangeLog | 6 | ||||
-rw-r--r-- | gcc/simplify-rtx.c | 4 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/gcc.c-torture/execute/20000717-2.c | 11 |
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); +} |