r217205 - unique_ptrify BugReporter::visitors
Justin Bogner
mail at justinbogner.com
Thu Sep 4 17:13:42 PDT 2014
David Blaikie <dblaikie at gmail.com> writes:
> Author: dblaikie
> Date: Thu Sep 4 18:54:33 2014
> New Revision: 217205
>
> URL: http://llvm.org/viewvc/llvm-project?rev=217205&view=rev
> Log:
> unique_ptrify BugReporter::visitors
>
> Modified:
> cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
> cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h
> cfe/trunk/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp
> cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
> cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
> cfe/trunk/lib/StaticAnalyzer/Checkers/TestAfterDivZeroChecker.cpp
> cfe/trunk/lib/StaticAnalyzer/Checkers/UndefCapturedBlockVarChecker.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
> cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h
> URL:
> http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporter.h Thu Sep 4 18:54:33 2014
> @@ -63,7 +63,7 @@ public:
> };
>
> typedef const SourceRange *ranges_iterator;
> - typedef SmallVector<BugReporterVisitor *, 8> VisitorList;
> + typedef SmallVector<std::unique_ptr<BugReporterVisitor>, 8> VisitorList;
> typedef VisitorList::iterator visitor_iterator;
> typedef SmallVector<StringRef, 2> ExtraTextList;
>
> @@ -299,9 +299,9 @@ public:
> /// \sa registerConditionVisitor(), registerTrackNullOrUndefValue(),
> /// registerFindLastStore(), registerNilReceiverVisitor(), and
> /// registerVarDeclsLastStore().
> - void addVisitor(BugReporterVisitor *visitor);
> + void addVisitor(std::unique_ptr<BugReporterVisitor> visitor);
>
> - /// Iterators through the custom diagnostic visitors.
> + /// Iterators through the custom diagnostic visitors.
> visitor_iterator visitor_begin() { return Callbacks.begin(); }
> visitor_iterator visitor_end() { return Callbacks.end(); }
Spacing looks pretty strange here.
>
>
> Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h (original)
> +++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/BugReporterVisitor.h Thu Sep 4 18:54:33 2014
> @@ -48,7 +48,7 @@ public:
> /// (Warning: if you have a deep subclass of BugReporterVisitorImpl, the
> /// default implementation of clone() will NOT do the right thing, and you
> /// will have to provide your own implementation.)
> - virtual BugReporterVisitor *clone() const = 0;
> + virtual std::unique_ptr<BugReporterVisitor> clone() const = 0;
>
> /// \brief Return a diagnostic piece which should be associated with the
> /// given node.
> @@ -87,8 +87,8 @@ public:
> /// will have to provide your own implementation.)
> template <class DERIVED>
> class BugReporterVisitorImpl : public BugReporterVisitor {
> - BugReporterVisitor *clone() const override {
> - return new DERIVED(*static_cast<const DERIVED *>(this));
> + std::unique_ptr<BugReporterVisitor> clone() const override {
> + return llvm::make_unique<DERIVED>(*static_cast<const DERIVED *>(this));
> }
> };
>
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/MacOSKeychainAPIChecker.cpp Thu Sep 4 18:54:33 2014
> @@ -270,7 +270,7 @@ void MacOSKeychainAPIChecker::
> os << "Deallocator doesn't match the allocator: '"
> << FunctionsToTrack[PDeallocIdx].Name << "' should be used.";
> BugReport *Report = new BugReport(*BT, os.str(), N);
> - Report->addVisitor(new SecKeychainBugVisitor(AP.first));
> + Report->addVisitor(llvm::make_unique<SecKeychainBugVisitor>(AP.first));
> Report->addRange(ArgExpr->getSourceRange());
> markInteresting(Report, AP);
> C.emitReport(Report);
> @@ -311,7 +311,7 @@ void MacOSKeychainAPIChecker::checkPreSt
> << FunctionsToTrack[DIdx].Name
> << "'.";
> BugReport *Report = new BugReport(*BT, os.str(), N);
> - Report->addVisitor(new SecKeychainBugVisitor(V));
> + Report->addVisitor(llvm::make_unique<SecKeychainBugVisitor>(V));
> Report->addRange(ArgExpr->getSourceRange());
> Report->markInteresting(AS->Region);
> C.emitReport(Report);
> @@ -430,7 +430,7 @@ void MacOSKeychainAPIChecker::checkPreSt
> initBugType();
> BugReport *Report = new BugReport(*BT,
> "Only call free if a valid (non-NULL) buffer was returned.", N);
> - Report->addVisitor(new SecKeychainBugVisitor(ArgSM));
> + Report->addVisitor(llvm::make_unique<SecKeychainBugVisitor>(ArgSM));
> Report->addRange(ArgExpr->getSourceRange());
> Report->markInteresting(AS->Region);
> C.emitReport(Report);
> @@ -540,7 +540,7 @@ BugReport *MacOSKeychainAPIChecker::
> BugReport *Report = new BugReport(*BT, os.str(), N, LocUsedForUniqueing,
> AllocNode->getLocationContext()->getDecl());
>
> - Report->addVisitor(new SecKeychainBugVisitor(AP.first));
> + Report->addVisitor(llvm::make_unique<SecKeychainBugVisitor>(AP.first));
> markInteresting(Report, AP);
> return Report;
> }
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/MallocChecker.cpp Thu Sep 4 18:54:33 2014
> @@ -1467,7 +1467,7 @@ void MallocChecker::ReportMismatchedDeal
> BugReport *R = new BugReport(*BT_MismatchedDealloc, os.str(), N);
> R->markInteresting(Sym);
> R->addRange(Range);
> - R->addVisitor(new MallocBugVisitor(Sym));
> + R->addVisitor(llvm::make_unique<MallocBugVisitor>(Sym));
> C.emitReport(R);
> }
> }
> @@ -1551,7 +1551,7 @@ void MallocChecker::ReportUseAfterFree(C
>
> R->markInteresting(Sym);
> R->addRange(Range);
> - R->addVisitor(new MallocBugVisitor(Sym));
> + R->addVisitor(llvm::make_unique<MallocBugVisitor>(Sym));
> C.emitReport(R);
> }
> }
> @@ -1583,7 +1583,7 @@ void MallocChecker::ReportDoubleFree(Che
> R->markInteresting(Sym);
> if (PrevSym)
> R->markInteresting(PrevSym);
> - R->addVisitor(new MallocBugVisitor(Sym));
> + R->addVisitor(llvm::make_unique<MallocBugVisitor>(Sym));
> C.emitReport(R);
> }
> }
> @@ -1607,7 +1607,7 @@ void MallocChecker::ReportDoubleDelete(C
> "Attempt to delete released memory", N);
>
> R->markInteresting(Sym);
> - R->addVisitor(new MallocBugVisitor(Sym));
> + R->addVisitor(llvm::make_unique<MallocBugVisitor>(Sym));
> C.emitReport(R);
> }
> }
> @@ -1835,7 +1835,7 @@ void MallocChecker::reportLeak(SymbolRef
> new BugReport(*BT_Leak[*CheckKind], os.str(), N, LocUsedForUniqueing,
> AllocNode->getLocationContext()->getDecl());
> R->markInteresting(Sym);
> - R->addVisitor(new MallocBugVisitor(Sym, true));
> + R->addVisitor(llvm::make_unique<MallocBugVisitor>(Sym, true));
> C.emitReport(R);
> }
>
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/RetainCountChecker.cpp Thu Sep 4 18:54:33 2014
> @@ -1732,13 +1732,13 @@ namespace {
> const ExplodedNode *N,
> BugReport &BR) override;
>
> - BugReporterVisitor *clone() const override {
> + std::unique_ptr<BugReporterVisitor> clone() const override {
> // The curiously-recurring template pattern only works for one level of
> // subclassing. Rather than make a new template base for
> // CFRefReportVisitor, we simply override clone() to do the right thing.
> // This could be trouble someday if BugReporterVisitorImpl is ever
> // used for something else besides a convenient implementation of clone().
> - return new CFRefLeakReportVisitor(*this);
> + return llvm::make_unique<CFRefLeakReportVisitor>(*this);
> }
> };
>
> @@ -1751,7 +1751,7 @@ namespace {
> bool registerVisitor = true)
> : BugReport(D, D.getDescription(), n) {
> if (registerVisitor)
> - addVisitor(new CFRefReportVisitor(sym, GCEnabled, Log));
> + addVisitor(llvm::make_unique<CFRefReportVisitor>(sym, GCEnabled, Log));
> addGCModeDescription(LOpts, GCEnabled);
> }
>
> @@ -1759,7 +1759,7 @@ namespace {
> const SummaryLogTy &Log, ExplodedNode *n, SymbolRef sym,
> StringRef endText)
> : BugReport(D, D.getDescription(), endText, n) {
> - addVisitor(new CFRefReportVisitor(sym, GCEnabled, Log));
> + addVisitor(llvm::make_unique<CFRefReportVisitor>(sym, GCEnabled, Log));
> addGCModeDescription(LOpts, GCEnabled);
> }
>
> @@ -2387,7 +2387,7 @@ CFRefLeakReport::CFRefLeakReport(CFRefBu
> }
> }
>
> - addVisitor(new CFRefLeakReportVisitor(sym, GCEnabled, Log));
> + addVisitor(llvm::make_unique<CFRefLeakReportVisitor>(sym, GCEnabled, Log));
> }
>
> //===----------------------------------------------------------------------===//
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/TestAfterDivZeroChecker.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/TestAfterDivZeroChecker.cpp?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/TestAfterDivZeroChecker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/TestAfterDivZeroChecker.cpp Thu Sep 4 18:54:33 2014
> @@ -176,7 +176,8 @@ void TestAfterDivZeroChecker::reportBug(
> "already been used for division",
> N);
>
> - R->addVisitor(new DivisionBRVisitor(Val.getAsSymbol(), C.getStackFrame()));
> + R->addVisitor(llvm::make_unique<DivisionBRVisitor>(Val.getAsSymbol(),
> + C.getStackFrame()));
> C.emitReport(R);
> }
> }
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Checkers/UndefCapturedBlockVarChecker.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Checkers/UndefCapturedBlockVarChecker.cpp?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Checkers/UndefCapturedBlockVarChecker.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Checkers/UndefCapturedBlockVarChecker.cpp Thu Sep 4 18:54:33 2014
> @@ -92,8 +92,8 @@ UndefCapturedBlockVarChecker::checkPostS
> BugReport *R = new BugReport(*BT, os.str(), N);
> if (const Expr *Ex = FindBlockDeclRefExpr(BE->getBody(), VD))
> R->addRange(Ex->getSourceRange());
> - R->addVisitor(new FindLastStoreBRVisitor(*V, VR,
> - /*EnableNullFPSuppression*/false));
> + R->addVisitor(llvm::make_unique<FindLastStoreBRVisitor>(
> + *V, VR, /*EnableNullFPSuppression*/ false));
> R->disablePathPruning();
> // need location of block
> C.emitReport(R);
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp Thu Sep 4 18:54:33 2014
> @@ -499,10 +499,9 @@ PathDiagnosticBuilder::getEnclosingStmtL
> //===----------------------------------------------------------------------===//
> // "Visitors only" path diagnostic generation algorithm.
> //===----------------------------------------------------------------------===//
> -static bool GenerateVisitorsOnlyPathDiagnostic(PathDiagnostic &PD,
> - PathDiagnosticBuilder &PDB,
> - const ExplodedNode *N,
> - ArrayRef<BugReporterVisitor *> visitors) {
> +static bool GenerateVisitorsOnlyPathDiagnostic(
> + PathDiagnostic &PD, PathDiagnosticBuilder &PDB, const ExplodedNode *N,
> + ArrayRef<std::unique_ptr<BugReporterVisitor>> visitors) {
> // All path generation skips the very first node (the error node).
> // This is because there is special handling for the end-of-path note.
> N = N->getFirstPred();
> @@ -511,11 +510,9 @@ static bool GenerateVisitorsOnlyPathDiag
>
> BugReport *R = PDB.getBugReport();
> while (const ExplodedNode *Pred = N->getFirstPred()) {
> - for (ArrayRef<BugReporterVisitor *>::iterator I = visitors.begin(),
> - E = visitors.end();
> - I != E; ++I) {
> + for (auto &V : visitors) {
> // Visit all the node pairs, but throw the path pieces away.
> - PathDiagnosticPiece *Piece = (*I)->VisitNode(N, Pred, PDB, *R);
> + PathDiagnosticPiece *Piece = V->VisitNode(N, Pred, PDB, *R);
> delete Piece;
> }
>
> @@ -556,11 +553,10 @@ static void updateStackPiecesWithMessage
>
> static void CompactPathDiagnostic(PathPieces &path, const SourceManager& SM);
>
> -static bool GenerateMinimalPathDiagnostic(PathDiagnostic& PD,
> - PathDiagnosticBuilder &PDB,
> - const ExplodedNode *N,
> - LocationContextMap &LCM,
> - ArrayRef<BugReporterVisitor *> visitors) {
> +static bool GenerateMinimalPathDiagnostic(
> + PathDiagnostic &PD, PathDiagnosticBuilder &PDB, const ExplodedNode *N,
> + LocationContextMap &LCM,
> + ArrayRef<std::unique_ptr<BugReporterVisitor>> visitors) {
>
> SourceManager& SMgr = PDB.getSourceManager();
> const LocationContext *LC = PDB.LC;
> @@ -870,10 +866,8 @@ static bool GenerateMinimalPathDiagnosti
> if (NextNode) {
> // Add diagnostic pieces from custom visitors.
> BugReport *R = PDB.getBugReport();
> - for (ArrayRef<BugReporterVisitor *>::iterator I = visitors.begin(),
> - E = visitors.end();
> - I != E; ++I) {
> - if (PathDiagnosticPiece *p = (*I)->VisitNode(N, NextNode, PDB, *R)) {
> + for (auto &V : visitors) {
> + if (PathDiagnosticPiece *p = V->VisitNode(N, NextNode, PDB, *R)) {
> PD.getActivePath().push_front(p);
> updateStackPiecesWithMessage(p, CallStack);
> }
> @@ -1392,11 +1386,10 @@ static bool isInLoopBody(ParentMap &PM,
> // Top-level logic for generating extensive path diagnostics.
> //===----------------------------------------------------------------------===//
>
> -static bool GenerateExtensivePathDiagnostic(PathDiagnostic& PD,
> - PathDiagnosticBuilder &PDB,
> - const ExplodedNode *N,
> - LocationContextMap &LCM,
> - ArrayRef<BugReporterVisitor *> visitors) {
> +static bool GenerateExtensivePathDiagnostic(
> + PathDiagnostic &PD, PathDiagnosticBuilder &PDB, const ExplodedNode *N,
> + LocationContextMap &LCM,
> + ArrayRef<std::unique_ptr<BugReporterVisitor>> visitors) {
> EdgeBuilder EB(PD, PDB);
> const SourceManager& SM = PDB.getSourceManager();
> StackDiagVector CallStack;
> @@ -1573,10 +1566,8 @@ static bool GenerateExtensivePathDiagnos
>
> // Add pieces from custom visitors.
> BugReport *R = PDB.getBugReport();
> - for (ArrayRef<BugReporterVisitor *>::iterator I = visitors.begin(),
> - E = visitors.end();
> - I != E; ++I) {
> - if (PathDiagnosticPiece *p = (*I)->VisitNode(N, NextNode, PDB, *R)) {
> + for (auto &V : visitors) {
> + if (PathDiagnosticPiece *p = V->VisitNode(N, NextNode, PDB, *R)) {
> const PathDiagnosticLocation &Loc = p->getLocation();
> EB.addEdge(Loc, true);
> PD.getActivePath().push_front(p);
> @@ -1635,12 +1626,10 @@ static const char StrLoopRangeEmpty[] =
> static const char StrLoopCollectionEmpty[] =
> "Loop body skipped when collection is empty";
>
> -static bool
> -GenerateAlternateExtensivePathDiagnostic(PathDiagnostic& PD,
> - PathDiagnosticBuilder &PDB,
> - const ExplodedNode *N,
> - LocationContextMap &LCM,
> - ArrayRef<BugReporterVisitor *> visitors) {
> +static bool GenerateAlternateExtensivePathDiagnostic(
> + PathDiagnostic &PD, PathDiagnosticBuilder &PDB, const ExplodedNode *N,
> + LocationContextMap &LCM,
> + ArrayRef<std::unique_ptr<BugReporterVisitor>> visitors) {
>
> BugReport *report = PDB.getBugReport();
> const SourceManager& SM = PDB.getSourceManager();
> @@ -1867,10 +1856,8 @@ GenerateAlternateExtensivePathDiagnostic
> continue;
>
> // Add pieces from custom visitors.
> - for (ArrayRef<BugReporterVisitor *>::iterator I = visitors.begin(),
> - E = visitors.end();
> - I != E; ++I) {
> - if (PathDiagnosticPiece *p = (*I)->VisitNode(N, NextNode, PDB, *report)) {
> + for (auto &V : visitors) {
> + if (PathDiagnosticPiece *p = V->VisitNode(N, NextNode, PDB, *report)) {
> addEdgeToPath(PD.getActivePath(), PrevLoc, p->getLocation(), PDB.LC);
> PD.getActivePath().push_front(p);
> updateStackPiecesWithMessage(p, CallStack);
> @@ -2547,7 +2534,7 @@ void BuiltinBug::anchor() {}
>
> void BugReport::NodeResolver::anchor() {}
>
> -void BugReport::addVisitor(BugReporterVisitor* visitor) {
> +void BugReport::addVisitor(std::unique_ptr<BugReporterVisitor> visitor) {
> if (!visitor)
> return;
>
> @@ -2555,20 +2542,15 @@ void BugReport::addVisitor(BugReporterVi
> visitor->Profile(ID);
> void *InsertPos;
>
> - if (CallbacksSet.FindNodeOrInsertPos(ID, InsertPos)) {
> - delete visitor;
> + if (CallbacksSet.FindNodeOrInsertPos(ID, InsertPos))
> return;
> - }
>
> - CallbacksSet.InsertNode(visitor, InsertPos);
> - Callbacks.push_back(visitor);
> + CallbacksSet.InsertNode(visitor.get(), InsertPos);
> + Callbacks.push_back(std::move(visitor));
> ++ConfigurationChangeToken;
> }
>
> BugReport::~BugReport() {
> - for (visitor_iterator I = visitor_begin(), E = visitor_end(); I != E; ++I) {
> - delete *I;
> - }
> while (!interestingSymbols.empty()) {
> popInterestingSymbolsAndRegions();
> }
> @@ -3126,9 +3108,9 @@ bool GRBugReporter::generatePathDiagnost
> const ExplodedNode *N = ErrorGraph.ErrorNode;
>
> // Register additional node visitors.
> - R->addVisitor(new NilReceiverBRVisitor());
> - R->addVisitor(new ConditionBRVisitor());
> - R->addVisitor(new LikelyFalsePositiveSuppressionBRVisitor());
> + R->addVisitor(llvm::make_unique<NilReceiverBRVisitor>());
> + R->addVisitor(llvm::make_unique<ConditionBRVisitor>());
> + R->addVisitor(llvm::make_unique<LikelyFalsePositiveSuppressionBRVisitor>());
>
> BugReport::VisitorList visitors;
> unsigned origReportConfigToken, finalReportConfigToken;
> @@ -3188,7 +3170,7 @@ bool GRBugReporter::generatePathDiagnost
> }
>
> // Clean up the visitors we used.
> - llvm::DeleteContainerPointers(visitors);
> + visitors.clear();
>
> // Did anything change while generating this path?
> finalReportConfigToken = R->getConfigurationChangeToken();
>
> Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
> URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp?rev=217205&r1=217204&r2=217205&view=diff
> ==============================================================================
> --- cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp (original)
> +++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp Thu Sep 4 18:54:33 2014
> @@ -218,7 +218,8 @@ public:
> EnableNullFPSuppression = State->isNull(*RetLoc).isConstrainedTrue();
>
> BR.markInteresting(CalleeContext);
> - BR.addVisitor(new ReturnVisitor(CalleeContext, EnableNullFPSuppression));
> + BR.addVisitor(llvm::make_unique<ReturnVisitor>(CalleeContext,
> + EnableNullFPSuppression));
> }
>
> /// Returns true if any counter-suppression heuristics are enabled for
> @@ -565,8 +566,8 @@ PathDiagnosticPiece *FindLastStoreBRVisi
> if (const VarRegion *OriginalR = BDR->getOriginalRegion(VR)) {
> if (Optional<KnownSVal> KV =
> State->getSVal(OriginalR).getAs<KnownSVal>())
> - BR.addVisitor(new FindLastStoreBRVisitor(*KV, OriginalR,
> - EnableNullFPSuppression));
> + BR.addVisitor(llvm::make_unique<FindLastStoreBRVisitor>(
> + *KV, OriginalR, EnableNullFPSuppression));
> }
> }
> }
> @@ -975,8 +976,8 @@ bool bugreporter::trackNullOrUndefValue(
> // got initialized.
> if (const MemRegion *RR = getLocationRegionIfReference(Inner, N)) {
> if (Optional<KnownSVal> KV = LVal.getAs<KnownSVal>())
> - report.addVisitor(new FindLastStoreBRVisitor(*KV, RR,
> - EnableNullFPSuppression));
> + report.addVisitor(llvm::make_unique<FindLastStoreBRVisitor>(
> + *KV, RR, EnableNullFPSuppression));
> }
> }
>
> @@ -986,30 +987,26 @@ bool bugreporter::trackNullOrUndefValue(
>
> report.markInteresting(R);
> report.markInteresting(V);
> - report.addVisitor(new UndefOrNullArgVisitor(R));
> + report.addVisitor(llvm::make_unique<UndefOrNullArgVisitor>(R));
>
> // If the contents are symbolic, find out when they became null.
> - if (V.getAsLocSymbol(/*IncludeBaseRegions*/ true)) {
> - BugReporterVisitor *ConstraintTracker =
> - new TrackConstraintBRVisitor(V.castAs<DefinedSVal>(), false);
> - report.addVisitor(ConstraintTracker);
> - }
> + if (V.getAsLocSymbol(/*IncludeBaseRegions*/ true))
> + report.addVisitor(llvm::make_unique<TrackConstraintBRVisitor>(
> + V.castAs<DefinedSVal>(), false));
>
> // Add visitor, which will suppress inline defensive checks.
> if (Optional<DefinedSVal> DV = V.getAs<DefinedSVal>()) {
> - if (!DV->isZeroConstant() &&
> - LVState->isNull(*DV).isConstrainedTrue() &&
> - EnableNullFPSuppression) {
> - BugReporterVisitor *IDCSuppressor =
> - new SuppressInlineDefensiveChecksVisitor(*DV,
> - LVNode);
> - report.addVisitor(IDCSuppressor);
> + if (!DV->isZeroConstant() && LVState->isNull(*DV).isConstrainedTrue() &&
> + EnableNullFPSuppression) {
> + report.addVisitor(
> + llvm::make_unique<SuppressInlineDefensiveChecksVisitor>(*DV,
> + LVNode));
> }
> }
>
> if (Optional<KnownSVal> KV = V.getAs<KnownSVal>())
> - report.addVisitor(new FindLastStoreBRVisitor(*KV, R,
> - EnableNullFPSuppression));
> + report.addVisitor(llvm::make_unique<FindLastStoreBRVisitor>(
> + *KV, R, EnableNullFPSuppression));
> return true;
> }
> }
> @@ -1040,12 +1037,12 @@ bool bugreporter::trackNullOrUndefValue(
> RVal = state->getSVal(L->getRegion());
>
> const MemRegion *RegionRVal = RVal.getAsRegion();
> - report.addVisitor(new UndefOrNullArgVisitor(L->getRegion()));
> + report.addVisitor(llvm::make_unique<UndefOrNullArgVisitor>(L->getRegion()));
>
> if (RegionRVal && isa<SymbolicRegion>(RegionRVal)) {
> report.markInteresting(RegionRVal);
> - report.addVisitor(new TrackConstraintBRVisitor(
> - loc::MemRegionVal(RegionRVal), false));
> + report.addVisitor(llvm::make_unique<TrackConstraintBRVisitor>(
> + loc::MemRegionVal(RegionRVal), false));
> }
> }
>
> @@ -1128,8 +1125,8 @@ void FindLastStoreBRVisitor::registerSta
>
> if (V.getAs<loc::ConcreteInt>() || V.getAs<nonloc::ConcreteInt>()) {
> // Register a new visitor with the BugReport.
> - BR.addVisitor(new FindLastStoreBRVisitor(V.castAs<KnownSVal>(), R,
> - EnableNullFPSuppression));
> + BR.addVisitor(llvm::make_unique<FindLastStoreBRVisitor>(
> + V.castAs<KnownSVal>(), R, EnableNullFPSuppression));
> }
> }
> }
>
>
> _______________________________________________
> cfe-commits mailing list
> cfe-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
More information about the cfe-commits
mailing list