[cfe-commits] r140130 - in /cfe/trunk: include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h lib/StaticAnalyzer/Core/BugReporter.cpp lib/StaticAnalyzer/Core/BugReporterVisitors.cpp lib/StaticAnalyzer/Core/PathDiagnostic.cpp
Anna Zaks
ganna at apple.com
Mon Sep 19 18:38:47 PDT 2011
Author: zaks
Date: Mon Sep 19 20:38:47 2011
New Revision: 140130
URL: http://llvm.org/viewvc/llvm-project?rev=140130&view=rev
Log:
[analyzer] Use more create methods in the PathDiagnostic, cleanup.
Modified:
cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
Modified: cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h?rev=140130&r1=140129&r2=140130&view=diff
==============================================================================
--- cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h (original)
+++ cfe/trunk/include/clang/StaticAnalyzer/Core/BugReporter/PathDiagnostic.h Mon Sep 19 20:38:47 2011
@@ -143,13 +143,18 @@
const SourceManager &SM);
/// Create a location corresponding to the given valid ExplodedNode.
- PathDiagnosticLocation(const ProgramPoint& P, const SourceManager &SMng);
+ static PathDiagnosticLocation create(const ProgramPoint& P,
+ const SourceManager &SMng);
/// Create a location corresponding to the next valid ExplodedNode as end
/// of path location.
static PathDiagnosticLocation createEndOfPath(const ExplodedNode* N,
const SourceManager &SM);
+ /// Convert the given location into a single kind location.
+ static PathDiagnosticLocation createSingleLocation(
+ const PathDiagnosticLocation &PDL);
+
bool operator==(const PathDiagnosticLocation &X) const {
return K == X.K && R == X.R && S == X.S && D == X.D && LC == X.LC;
}
@@ -173,16 +178,6 @@
*this = PathDiagnosticLocation();
}
- /// Specify that the object represents a single location.
- void setSingleLocKind() {
- if (K == SingleLocK)
- return;
-
- SourceLocation L = asLocation();
- K = SingleLocK;
- R = SourceRange(L, L);
- }
-
void flatten();
const SourceManager& getManager() const { assert(isValid()); return *SM; }
Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp?rev=140130&r1=140129&r2=140130&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporter.cpp Mon Sep 19 20:38:47 2011
@@ -881,7 +881,7 @@
}
if (firstCharOnly)
- L.setSingleLocKind();
+ L = PathDiagnosticLocation::createSingleLocation(L);
return L;
}
Modified: cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp?rev=140130&r1=140129&r2=140130&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/BugReporterVisitors.cpp Mon Sep 19 20:38:47 2011
@@ -240,7 +240,8 @@
// Construct a new PathDiagnosticPiece.
ProgramPoint P = N->getLocation();
- PathDiagnosticLocation L = PathDiagnosticLocation(P,BRC.getSourceManager());
+ PathDiagnosticLocation L =
+ PathDiagnosticLocation::create(P, BRC.getSourceManager());
if (!L.isValid())
return NULL;
return new PathDiagnosticEventPiece(L, os.str());
@@ -288,7 +289,8 @@
// Construct a new PathDiagnosticPiece.
ProgramPoint P = N->getLocation();
- PathDiagnosticLocation L = PathDiagnosticLocation(P,BRC.getSourceManager());
+ PathDiagnosticLocation L =
+ PathDiagnosticLocation::create(P, BRC.getSourceManager());
if (!L.isValid())
return NULL;
return new PathDiagnosticEventPiece(L, os.str());
Modified: cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp?rev=140130&r1=140129&r2=140130&view=diff
==============================================================================
--- cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp (original)
+++ cfe/trunk/lib/StaticAnalyzer/Core/PathDiagnostic.cpp Mon Sep 19 20:38:47 2011
@@ -156,6 +156,7 @@
return PathDiagnosticLocation(getValidSourceLocation(S, LC), SM, SingleLocK);
}
+
PathDiagnosticLocation
PathDiagnosticLocation::createOperatorLoc(const BinaryOperator *BO,
const SourceManager &SM) {
@@ -192,15 +193,16 @@
PathDiagnosticLocation
PathDiagnosticLocation::createDeclEnd(const LocationContext *LC,
- const SourceManager &SM) {
+ const SourceManager &SM) {
SourceLocation L = LC->getDecl()->getBodyRBrace();
return PathDiagnosticLocation(L, SM, SingleLocK);
}
-PathDiagnosticLocation::PathDiagnosticLocation(const ProgramPoint& P,
- const SourceManager &SMng)
- : K(StmtK), S(0), D(0), SM(&SMng), LC(P.getLocationContext()) {
+PathDiagnosticLocation
+ PathDiagnosticLocation::create(const ProgramPoint& P,
+ const SourceManager &SMng) {
+ const Stmt* S = 0;
if (const BlockEdge *BE = dyn_cast<BlockEdge>(&P)) {
const CFGBlock *BSrc = BE->getSrc();
S = BSrc->getTerminatorCondition();
@@ -209,8 +211,10 @@
S = PS->getStmt();
}
+ return PathDiagnosticLocation(S, SMng, P.getLocationContext());
+
if (!S)
- invalidate();
+ return PathDiagnosticLocation();
}
PathDiagnosticLocation
@@ -223,9 +227,8 @@
while (NI) {
ProgramPoint P = NI->getLocation();
const LocationContext *LC = P.getLocationContext();
- if (const StmtPoint *PS = dyn_cast<StmtPoint>(&P)) {
+ if (const StmtPoint *PS = dyn_cast<StmtPoint>(&P))
return PathDiagnosticLocation(PS->getStmt(), SM, LC);
- }
else if (const BlockEdge *BE = dyn_cast<BlockEdge>(&P)) {
const Stmt *Term = BE->getSrc()->getTerminator();
assert(Term);
@@ -237,6 +240,12 @@
return createDeclEnd(N->getLocationContext(), SM);
}
+PathDiagnosticLocation PathDiagnosticLocation::createSingleLocation(
+ const PathDiagnosticLocation &PDL) {
+ FullSourceLoc L = PDL.asLocation();
+ return PathDiagnosticLocation(L, L.getManager(), SingleLocK);
+}
+
FullSourceLoc PathDiagnosticLocation::asLocation() const {
assert(isValid());
// Note that we want a 'switch' here so that the compiler can warn us in
More information about the cfe-commits
mailing list