Author: Congcong Cai Date: 2024-12-05T11:17:45+08:00 New Revision: f98c9a9b3665c75a6bf01577734f16185710009d
URL: https://github.com/llvm/llvm-project/commit/f98c9a9b3665c75a6bf01577734f16185710009d DIFF: https://github.com/llvm/llvm-project/commit/f98c9a9b3665c75a6bf01577734f16185710009d.diff LOG: [mutation analyzer][NFC] combine `ConditionalOperator` `BinaryConditionalOperator` (#118602) Added: Modified: clang/lib/Analysis/ExprMutationAnalyzer.cpp Removed: ################################################################################ diff --git a/clang/lib/Analysis/ExprMutationAnalyzer.cpp b/clang/lib/Analysis/ExprMutationAnalyzer.cpp index be0e8aa5743dd9..53b838e9ede4d7 100644 --- a/clang/lib/Analysis/ExprMutationAnalyzer.cpp +++ b/clang/lib/Analysis/ExprMutationAnalyzer.cpp @@ -55,25 +55,13 @@ static bool canExprResolveTo(const Expr *Source, const Expr *Target) { // This is matched by `IgnoreDerivedToBase(canResolveToExpr(InnerMatcher))` // below. const auto ConditionalOperatorM = [Target](const Expr *E) { - if (const auto *OP = dyn_cast<ConditionalOperator>(E)) { - if (const auto *TE = OP->getTrueExpr()->IgnoreParens()) - if (canExprResolveTo(TE, Target)) - return true; - if (const auto *FE = OP->getFalseExpr()->IgnoreParens()) - if (canExprResolveTo(FE, Target)) - return true; - } - return false; - }; - - const auto ElvisOperator = [Target](const Expr *E) { - if (const auto *OP = dyn_cast<BinaryConditionalOperator>(E)) { - if (const auto *TE = OP->getTrueExpr()->IgnoreParens()) - if (canExprResolveTo(TE, Target)) - return true; - if (const auto *FE = OP->getFalseExpr()->IgnoreParens()) - if (canExprResolveTo(FE, Target)) - return true; + if (const auto *CO = dyn_cast<AbstractConditionalOperator>(E)) { + const auto *TE = CO->getTrueExpr()->IgnoreParens(); + if (TE && canExprResolveTo(TE, Target)) + return true; + const auto *FE = CO->getFalseExpr()->IgnoreParens(); + if (FE && canExprResolveTo(FE, Target)) + return true; } return false; }; @@ -81,8 +69,7 @@ static bool canExprResolveTo(const Expr *Source, const Expr *Target) { const Expr *SourceExprP = Source->IgnoreParens(); return IgnoreDerivedToBase(SourceExprP, [&](const Expr *E) { - return E == Target || ConditionalOperatorM(E) || - ElvisOperator(E); + return E == Target || ConditionalOperatorM(E); }) || EvalCommaExpr(SourceExprP, [&](const Expr *E) { return IgnoreDerivedToBase( _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits