[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