Hi. This changes code to be consistent:
if (!decNumberIsNegative(lhs) & decNumberIsNegative(rhs)) { ... else if (decNumberIsQNaN(lhs) && decNumberIsSNaN(rhs)) result=+1; That's fixed in the patch. Patch can bootstrap on ppc64le-redhat-linux and survives regression tests. Ready to be installed? Martin libdecnumber/ChangeLog: 2018-02-19 Martin Liska <mli...@suse.cz> PR c/81272 * decNumber.c (decCompareOp): Do not use bit and for conjunction of predicates. --- libdecnumber/decNumber.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libdecnumber/decNumber.c b/libdecnumber/decNumber.c index ebfb6c5dd96..e4194211fdc 100644 --- a/libdecnumber/decNumber.c +++ b/libdecnumber/decNumber.c @@ -6029,11 +6029,11 @@ decNumber * decCompareOp(decNumber *res, const decNumber *lhs, /* If total ordering then handle differing signs 'up front' */ if (op==COMPTOTAL) { /* total ordering */ - if (decNumberIsNegative(lhs) & !decNumberIsNegative(rhs)) { + if (decNumberIsNegative(lhs) && !decNumberIsNegative(rhs)) { result=-1; break; } - if (!decNumberIsNegative(lhs) & decNumberIsNegative(rhs)) { + if (!decNumberIsNegative(lhs) && decNumberIsNegative(rhs)) { result=+1; break; }