[clang] [clang-tools-extra] [analyzer] Remove alpha.core.IdenticalExpr Checker (PR #114715)
via cfe-commits
cfe-commits at lists.llvm.org
Fri Nov 8 07:18:37 PST 2024
================
@@ -1238,6 +1235,59 @@ void RedundantExpressionCheck::check(const MatchFinder::MatchResult &Result) {
if (const auto *BinOp = Result.Nodes.getNodeAs<BinaryOperator>("binary")) {
// If the expression's constants are macros, check whether they are
// intentional.
+
+ //
+ // Special case for floating-point representation.
+ //
+ // If expressions on both sides of comparison operator are of type float,
+ // then for some comparison operators no warning shall be
+ // reported even if the expressions are identical from a symbolic point of
+ // view. Comparison between expressions, declared variables and literals
+ // are treated differently.
+ //
+ // != and == between float literals that have the same value should NOT
+ // warn. < > between float literals that have the same value SHOULD warn.
+ //
+ // != and == between the same float declaration should NOT warn.
+ // < > between the same float declaration SHOULD warn.
+ //
+ // != and == between eq. expressions that evaluates into float
+ // should NOT warn.
+ // < > between eq. expressions that evaluates into float
+ // should NOT warn.
+ //
+ const Expr *LHS = BinOp->getLHS()->IgnoreParenImpCasts();
+ const Expr *RHS = BinOp->getRHS()->IgnoreParenImpCasts();
+ BinaryOperator::Opcode Op = BinOp->getOpcode();
+
+ const DeclRefExpr *DeclRef1 = dyn_cast<DeclRefExpr>(LHS);
----------------
EugeneZelenko wrote:
```suggestion
const auto *DeclRef1 = dyn_cast<DeclRefExpr>(LHS);
```
Same below.
https://github.com/llvm/llvm-project/pull/114715
More information about the cfe-commits
mailing list