[clang] [analyzer] Support determining origins in a conditional operator in WebKit checkers. (PR #91143)

Artem Dergachev via cfe-commits cfe-commits at lists.llvm.org
Mon May 6 15:52:06 PDT 2024


================
@@ -27,12 +28,18 @@ tryToFindPtrOrigin(const Expr *E, bool StopAtFirstRefCountedObj) {
       E = tempExpr->getSubExpr();
       continue;
     }
+    if (auto *Expr = dyn_cast<ConditionalOperator>(E)) {
+      return tryToFindPtrOrigin(Expr->getTrueExpr(), StopAtFirstRefCountedObj,
+                                callback) &&
+             tryToFindPtrOrigin(Expr->getFalseExpr(), StopAtFirstRefCountedObj,
----------------
haoNoQ wrote:

Hmm does this code play well with `StopAtFirstRefCountedObj`? Am I reading this right that both branches need to originate from a smart pointer, so we should never really stop in the middle between the branches?

https://github.com/llvm/llvm-project/pull/91143


More information about the cfe-commits mailing list