[clang-tools-extra] a73b87b - [clang-tidy] Avoid float compare in bugprone-incorrect-roundings

Piotr Zegar via cfe-commits cfe-commits at lists.llvm.org
Sat Apr 15 02:10:20 PDT 2023


Author: Piotr Zegar
Date: 2023-04-15T09:09:21Z
New Revision: a73b87b8bd47e0634d741e655ae37a22f6b82287

URL: https://github.com/llvm/llvm-project/commit/a73b87b8bd47e0634d741e655ae37a22f6b82287
DIFF: https://github.com/llvm/llvm-project/commit/a73b87b8bd47e0634d741e655ae37a22f6b82287.diff

LOG: [clang-tidy] Avoid float compare in bugprone-incorrect-roundings

Using APFloat to compare floating numbers instead of float/double.

Fixes: #46424

Reviewed By: carlosgalvezp

Differential Revision: https://reviews.llvm.org/D147906

Added: 
    

Modified: 
    clang-tools-extra/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp

Removed: 
    


################################################################################
diff  --git a/clang-tools-extra/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp b/clang-tools-extra/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp
index beca7aefc88ba..c0f76cc0267ba 100644
--- a/clang-tools-extra/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp
+++ b/clang-tools-extra/clang-tidy/bugprone/IncorrectRoundingsCheck.cpp
@@ -17,13 +17,17 @@ using namespace clang::ast_matchers;
 
 namespace clang::tidy::bugprone {
 
+static llvm::APFloat getHalf(const llvm::fltSemantics &Semantics) {
+  return llvm::APFloat(Semantics, 1U) / llvm::APFloat(Semantics, 2U);
+}
+
 namespace {
 AST_MATCHER(FloatingLiteral, floatHalf) {
-  const auto &Literal = Node.getValue();
+  const llvm::APFloat Literal = Node.getValue();
   if ((&Node.getSemantics()) == &llvm::APFloat::IEEEsingle())
-    return Literal.convertToFloat() == 0.5f;
+    return Literal == getHalf(llvm::APFloat::IEEEsingle());
   if ((&Node.getSemantics()) == &llvm::APFloat::IEEEdouble())
-    return Literal.convertToDouble() == 0.5;
+    return Literal == getHalf(llvm::APFloat::IEEEdouble());
   return false;
 }
 } // namespace


        


More information about the cfe-commits mailing list