diff options
author | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-11-23 10:39:41 +0200 |
---|---|---|
committer | Noel Grandin <noel.grandin@collabora.co.uk> | 2017-11-23 14:11:24 +0100 |
commit | e0846b7abe78e55bc1e959143d980208077b13ca (patch) | |
tree | 988de98c368eeb794cfeaad90462d9db6e995927 /compilerplugins/clang/simplifybool.cxx | |
parent | 1db2cdd97155f690fa9e08911c20ea3d246418dc (diff) |
loplugin:simplifybool can't invert conditions involving float types
so revert some of the changes from
commit 7a1c21e53fc4733a4bb52282ce0098fcc085ab0e
loplugin:simplifybool for negation of comparison operator
Change-Id: I937d575b86c1e418805d399b0dc16ae91876b4fe
Reviewed-on: https://gerrit.libreoffice.org/45130
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
Tested-by: Noel Grandin <noel.grandin@collabora.co.uk>
Diffstat (limited to 'compilerplugins/clang/simplifybool.cxx')
-rw-r--r-- | compilerplugins/clang/simplifybool.cxx | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/compilerplugins/clang/simplifybool.cxx b/compilerplugins/clang/simplifybool.cxx index 260946a5fd98..9167014f8c84 100644 --- a/compilerplugins/clang/simplifybool.cxx +++ b/compilerplugins/clang/simplifybool.cxx @@ -142,6 +142,10 @@ bool SimplifyBool::VisitUnaryLNot(UnaryOperator const * expr) { // RecordType would require more smarts - we'd need to verify that an inverted operator actually existed if (t->isTemplateTypeParmType() || t->isRecordType() || t->isDependentType()) return true; + // for floating point (with NaN) !(x<y) need not be equivalent to x>=y + if (t->isFloatingType() || + binaryOp->getRHS()->IgnoreImpCasts()->getType()->getUnqualifiedDesugaredType()->isFloatingType()) + return true; if (!binaryOp->isComparisonOp()) return true; report( |