[clang] f98c9a9 - [mutation analyzer][NFC] combine `ConditionalOperator` `BinaryConditionalOperator` (#118602)
via cfe-commits
cfe-commits at lists.llvm.org
Wed Dec 4 19:17:49 PST 2024
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(
More information about the cfe-commits
mailing list