зеркало из https://github.com/microsoft/clang-1.git
Rename instance variable to avoid name conflict with parameters, and modify addTransition() to compare the correct state values.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@90552 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Родитель
6dea404751
Коммит
bfb4fc9ebc
|
@ -39,7 +39,7 @@ class CheckerContext {
|
|||
SaveAndRestore<const void*> OldTag;
|
||||
SaveAndRestore<ProgramPoint::Kind> OldPointKind;
|
||||
SaveOr OldHasGen;
|
||||
const GRState *state;
|
||||
const GRState *ST;
|
||||
const Stmt *statement;
|
||||
const unsigned size;
|
||||
bool DoneEvaluating; // FIXME: This is not a permanent API change.
|
||||
|
@ -53,7 +53,7 @@ public:
|
|||
OldTag(B.Tag, tag),
|
||||
OldPointKind(B.PointKind, K),
|
||||
OldHasGen(B.HasGeneratedNode),
|
||||
state(st), statement(stmt), size(Dst.size()) {}
|
||||
ST(st), statement(stmt), size(Dst.size()) {}
|
||||
|
||||
~CheckerContext();
|
||||
|
||||
|
@ -68,7 +68,7 @@ public:
|
|||
ExplodedNodeSet &getNodeSet() { return Dst; }
|
||||
GRStmtNodeBuilder &getNodeBuilder() { return B; }
|
||||
ExplodedNode *&getPredecessor() { return Pred; }
|
||||
const GRState *getState() { return state ? state : B.GetState(Pred); }
|
||||
const GRState *getState() { return ST ? ST : B.GetState(Pred); }
|
||||
|
||||
ASTContext &getASTContext() {
|
||||
return Eng.getContext();
|
||||
|
@ -126,8 +126,7 @@ public:
|
|||
|
||||
void addTransition(const GRState *state) {
|
||||
assert(state);
|
||||
if (state != getState() ||
|
||||
(state && state != B.GetState(Pred)))
|
||||
if (state != getState() || (ST && ST != B.GetState(Pred)))
|
||||
GenerateNode(state, true);
|
||||
else
|
||||
Dst.Add(Pred);
|
||||
|
|
|
@ -24,10 +24,10 @@ CheckerContext::~CheckerContext() {
|
|||
// if we are building sinks or we generated a node and decided to not
|
||||
// add it as a transition.
|
||||
if (Dst.size() == size && !B.BuildSinks && !B.HasGeneratedNode) {
|
||||
if (state && state != B.GetState(Pred)) {
|
||||
if (ST && ST != B.GetState(Pred)) {
|
||||
static int autoTransitionTag = 0;
|
||||
B.Tag = &autoTransitionTag;
|
||||
addTransition(state);
|
||||
addTransition(ST);
|
||||
}
|
||||
else
|
||||
Dst.Add(Pred);
|
||||
|
|
Загрузка…
Ссылка в новой задаче