diff --git a/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h b/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h --- a/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h +++ b/clang/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitors.h @@ -353,9 +353,7 @@ /// statement. Note that returning \c true does not actually imply /// that any visitors were added. bool trackExpressionValue(const ExplodedNode *N, const Expr *E, - PathSensitiveBugReport &R, - TrackingKind TKind = TrackingKind::Thorough, - bool EnableNullFPSuppression = true); + PathSensitiveBugReport &R, TrackingOptions Opts = {}); /// Track how the value got stored into the given region and where it came /// from. diff --git a/clang/lib/StaticAnalyzer/Checkers/MIGChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/MIGChecker.cpp --- a/clang/lib/StaticAnalyzer/Checkers/MIGChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/MIGChecker.cpp @@ -284,8 +284,9 @@ N); R->addRange(RS->getSourceRange()); - bugreporter::trackExpressionValue(N, RS->getRetValue(), *R, - bugreporter::TrackingKind::Thorough, false); + bugreporter::trackExpressionValue( + N, RS->getRetValue(), *R, + {bugreporter::TrackingKind::Thorough, /*EnableNullFPSuppression=*/false}); C.emitReport(std::move(R)); } diff --git a/clang/lib/StaticAnalyzer/Checkers/ObjCContainersChecker.cpp b/clang/lib/StaticAnalyzer/Checkers/ObjCContainersChecker.cpp --- a/clang/lib/StaticAnalyzer/Checkers/ObjCContainersChecker.cpp +++ b/clang/lib/StaticAnalyzer/Checkers/ObjCContainersChecker.cpp @@ -147,8 +147,9 @@ auto R = std::make_unique( *BT, "Index is out of bounds", N); R->addRange(IdxExpr->getSourceRange()); - bugreporter::trackExpressionValue( - N, IdxExpr, *R, bugreporter::TrackingKind::Thorough, false); + bugreporter::trackExpressionValue(N, IdxExpr, *R, + {bugreporter::TrackingKind::Thorough, + /*EnableNullFPSuppression=*/false}); C.emitReport(std::move(R)); return; } diff --git a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp --- a/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp +++ b/clang/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp @@ -2314,12 +2314,11 @@ bool bugreporter::trackExpressionValue(const ExplodedNode *InputNode, const Expr *E, - PathSensitiveBugReport &report, - bugreporter::TrackingKind TKind, - bool EnableNullFPSuppression) { + PathSensitiveBugReport &Report, + TrackingOptions Opts) { - return Tracker::create(report) - ->track(E, InputNode, {TKind, EnableNullFPSuppression}) + return Tracker::create(Report) + ->track(E, InputNode, Opts) .FoundSomethingToTrack; } @@ -2376,9 +2375,9 @@ // The receiver was nil, and hence the method was skipped. // Register a BugReporterVisitor to issue a message telling us how // the receiver was null. - bugreporter::trackExpressionValue( - N, Receiver, BR, bugreporter::TrackingKind::Thorough, - /*EnableNullFPSuppression*/ false); + bugreporter::trackExpressionValue(N, Receiver, BR, + {bugreporter::TrackingKind::Thorough, + /*EnableNullFPSuppression*/ false}); // Issue a message saying that the method was skipped. PathDiagnosticLocation L(Receiver, BRC.getSourceManager(), N->getLocationContext());