aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h39
1 files changed, 11 insertions, 28 deletions
diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h b/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
index 98c8b52425..35c17906f6 100644
--- a/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
+++ b/include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h
@@ -114,12 +114,7 @@ public:
/// \brief Generate a default checker node (containing checker tag but no
/// checker state changes).
ExplodedNode *generateNode(bool autoTransition = true) {
- assert(statement && "Only transitions with statements currently supported");
- ExplodedNode *N = generateNodeImpl(statement, getState(), false,
- checkerTag);
- if (N && autoTransition)
- Dst.Add(N);
- return N;
+ return generateNode(getState(), autoTransition);
}
/// \brief Generate a new checker node with the given predecessor.
@@ -127,8 +122,7 @@ public:
ExplodedNode *generateNode(const ProgramState *state,
ExplodedNode *pred,
bool autoTransition = true) {
- assert(statement && "Only transitions with statements currently supported");
- ExplodedNode *N = generateNodeImpl(statement, state, pred, false);
+ ExplodedNode *N = generateNodeImpl(state, false, pred);
if (N && autoTransition)
addTransition(N);
return N;
@@ -138,9 +132,7 @@ public:
ExplodedNode *generateNode(const ProgramState *state,
bool autoTransition = true,
const ProgramPointTag *tag = 0) {
- assert(statement && "Only transitions with statements currently supported");
- ExplodedNode *N = generateNodeImpl(statement, state, false,
- tag ? tag : checkerTag);
+ ExplodedNode *N = generateNodeImpl(state, false, 0, tag);
if (N && autoTransition)
addTransition(N);
return N;
@@ -149,9 +141,7 @@ public:
/// \brief Generate a sink node. Generating sink stops exploration of the
/// given path.
ExplodedNode *generateSink(const ProgramState *state = 0) {
- assert(statement && "Only transitions with statements currently supported");
- return generateNodeImpl(statement, state ? state : getState(), true,
- checkerTag);
+ return generateNodeImpl(state ? state : getState(), true);
}
void addTransition(ExplodedNode *node) {
@@ -179,21 +169,14 @@ public:
}
private:
- ExplodedNode *generateNodeImpl(const Stmt *stmt,
- const ProgramState *state,
+ ExplodedNode *generateNodeImpl(const ProgramState *state,
bool markAsSink,
- const ProgramPointTag *tag) {
- ExplodedNode *node = B.generateNode(stmt, state, Pred, tag);
- if (markAsSink && node)
- node->markAsSink();
- return node;
- }
-
- ExplodedNode *generateNodeImpl(const Stmt *stmt,
- const ProgramState *state,
- ExplodedNode *pred,
- bool markAsSink) {
- ExplodedNode *node = B.generateNode(stmt, state, pred, checkerTag);
+ ExplodedNode *pred = 0,
+ const ProgramPointTag *tag = 0) {
+ assert(statement && "Only transitions with statements currently supported");
+ ExplodedNode *node = B.generateNode(statement, state,
+ pred ? pred : Pred,
+ tag ? tag : checkerTag);
if (markAsSink && node)
node->markAsSink();
return node;