Skip to content
Snippets Groups Projects
Commit c91d03ca authored by Artem Dergachev's avatar Artem Dergachev
Browse files

[analyzer] MisusedMovedObject: Add printState() method for self-debugging.

This method injects additional information into program state dumps,
describing which objects have been moved from.

Differential Revision: https://reviews.llvm.org/D31541


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@315300 91177308-0d34-0410-b5e6-96231b3b80d8
parent 90036a54
No related branches found
No related tags found
No related merge requests found
...@@ -56,6 +56,8 @@ public: ...@@ -56,6 +56,8 @@ public:
ArrayRef<const MemRegion *> ExplicitRegions, ArrayRef<const MemRegion *> ExplicitRegions,
ArrayRef<const MemRegion *> Regions, ArrayRef<const MemRegion *> Regions,
const LocationContext *LCtx, const CallEvent *Call) const; const LocationContext *LCtx, const CallEvent *Call) const;
void printState(raw_ostream &Out, ProgramStateRef State,
const char *NL, const char *Sep) const override;
private: private:
class MovedBugVisitor : public BugReporterVisitorImpl<MovedBugVisitor> { class MovedBugVisitor : public BugReporterVisitorImpl<MovedBugVisitor> {
...@@ -476,6 +478,25 @@ ProgramStateRef MisusedMovedObjectChecker::checkRegionChanges( ...@@ -476,6 +478,25 @@ ProgramStateRef MisusedMovedObjectChecker::checkRegionChanges(
return State; return State;
} }
void MisusedMovedObjectChecker::printState(raw_ostream &Out,
ProgramStateRef State,
const char *NL,
const char *Sep) const {
TrackedRegionMapTy RS = State->get<TrackedRegionMap>();
if (!RS.isEmpty()) {
Out << Sep << "Moved-from objects :" << NL;
for (auto I: RS) {
I.first->dumpToStream(Out);
if (I.second.isMoved())
Out << ": moved";
else
Out << ": moved and reported";
Out << NL;
}
}
}
void ento::registerMisusedMovedObjectChecker(CheckerManager &mgr) { void ento::registerMisusedMovedObjectChecker(CheckerManager &mgr) {
mgr.registerChecker<MisusedMovedObjectChecker>(); mgr.registerChecker<MisusedMovedObjectChecker>();
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment