diff options
author | Anna Zaks <ganna@apple.com> | 2011-10-04 23:12:04 +0000 |
---|---|---|
committer | Anna Zaks <ganna@apple.com> | 2011-10-04 23:12:04 +0000 |
commit | 50f3cade2a87bda005ae08d42b51c5b960b07779 (patch) | |
tree | 4c2cdf2606005d70396061ab36c1b85f049a43a9 | |
parent | 4c9403c57e4a867c58903546af5826df56a83980 (diff) |
[analyzer] Refactor node generation to use less code.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@141133 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | include/clang/StaticAnalyzer/Core/PathSensitive/CheckerContext.h | 39 |
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; |