Message ID | 5f6c38def032322cffa98349b553855247b49041.1495042128.git.segher@kernel.crashing.org |
---|---|
State | New |
Headers | show |
On Wed, May 17, 2017 at 06:36:38PM +0000, Segher Boessenkool wrote: > 2017-05-17 Segher Boessenkool <segher@kernel.crashing.org> > > PR middle-end/80692 > * real.c (do_compare): Give decimal_do_compare preference over > comparing just the signs. > > gcc/testsuite/ > PR middle-end/80692 > * gcc.c-torture/execute/pr80692.c: New testcase. OK, thanks. Cheers, Ben
diff --git a/gcc/real.c b/gcc/real.c index 97452a9..a5671b2 100644 --- a/gcc/real.c +++ b/gcc/real.c @@ -960,12 +960,12 @@ do_compare (const REAL_VALUE_TYPE *a, const REAL_VALUE_TYPE *b, gcc_unreachable (); } - if (a->sign != b->sign) - return -a->sign - -b->sign; - if (a->decimal || b->decimal) return decimal_do_compare (a, b, nan_result); + if (a->sign != b->sign) + return -a->sign - -b->sign; + if (REAL_EXP (a) > REAL_EXP (b)) ret = 1; else if (REAL_EXP (a) < REAL_EXP (b)) diff --git a/gcc/testsuite/gcc.c-torture/execute/pr80692.c b/gcc/testsuite/gcc.c-torture/execute/pr80692.c new file mode 100644 index 0000000..e653c71 --- /dev/null +++ b/gcc/testsuite/gcc.c-torture/execute/pr80692.c @@ -0,0 +1,13 @@ +/* { dg-require-effective-target dfp } */ + +int main () { + _Decimal64 d64 = -0.DD; + + if (d64 != 0.DD) + __builtin_abort (); + + if (d64 != -0.DD) + __builtin_abort (); + + return 0; +}