[llvm-branch-commits] [clang] [FlowSensitive] [StatusOr] [14/N] Support nested StatusOrs (PR #170950)

Florian Mayer via llvm-branch-commits llvm-branch-commits at lists.llvm.org
Wed Dec 10 13:59:09 PST 2025


https://github.com/fmayer updated https://github.com/llvm/llvm-project/pull/170950

>From 454f37b0be36c89c66108fc19f159d4a1d919f51 Mon Sep 17 00:00:00 2001
From: Florian Mayer <fmayer at google.com>
Date: Wed, 10 Dec 2025 13:58:55 -0800
Subject: [PATCH] types

Created using spr 1.3.7
---
 .../Models/UncheckedStatusOrAccessModel.cpp          | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/clang/lib/Analysis/FlowSensitive/Models/UncheckedStatusOrAccessModel.cpp b/clang/lib/Analysis/FlowSensitive/Models/UncheckedStatusOrAccessModel.cpp
index c42661a61add4..a3c5469abd6b4 100644
--- a/clang/lib/Analysis/FlowSensitive/Models/UncheckedStatusOrAccessModel.cpp
+++ b/clang/lib/Analysis/FlowSensitive/Models/UncheckedStatusOrAccessModel.cpp
@@ -1044,7 +1044,7 @@ transferAssertionResultOperatorBoolCall(const CXXMemberCallExpr *Expr,
   State.Env.setValue(*Expr, Res);
 }
 
-static void transferDerefCall(const CallExpr *Expr,
+static void transferDerefCall(const CXXOperatorCallExpr *Expr,
                               const MatchFinder::MatchResult &,
                               LatticeTransferState &State) {
   auto *StatusOrLoc = State.Env.get<RecordStorageLocation>(*Expr->getArg(0));
@@ -1054,7 +1054,7 @@ static void transferDerefCall(const CallExpr *Expr,
                                  StatusOrLoc->getSyntheticField("value"));
 }
 
-static void transferArrowCall(const CallExpr *Expr,
+static void transferArrowCall(const CXXOperatorCallExpr *Expr,
                               const MatchFinder::MatchResult &,
                               LatticeTransferState &State) {
   auto *StatusOrLoc = State.Env.get<RecordStorageLocation>(*Expr->getArg(0));
@@ -1160,10 +1160,10 @@ buildTransferMatchSwitch(ASTContext &Ctx,
                                           transferValueAssignmentCall)
       .CaseOfCFGStmt<CXXConstructExpr>(isStatusOrValueConstructor(),
                                        transferValueConstructor)
-      .CaseOfCFGStmt<CallExpr>(isStatusOrOperatorCallWithName("->"),
-                               transferArrowCall)
-      .CaseOfCFGStmt<CallExpr>(isStatusOrOperatorCallWithName("*"),
-                               transferDerefCall)
+      .CaseOfCFGStmt<CXXOperatorCallExpr>(isStatusOrOperatorCallWithName("->"),
+                                          transferArrowCall)
+      .CaseOfCFGStmt<CXXOperatorCallExpr>(isStatusOrOperatorCallWithName("*"),
+                                          transferDerefCall)
       .CaseOfCFGStmt<CXXMemberCallExpr>(isStatusOrMemberCallWithName("value"),
                                         transferValueCall)
       .CaseOfCFGStmt<CallExpr>(isAsStatusCallWithStatus(),



More information about the llvm-branch-commits mailing list