================ @@ -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 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits