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:
Ted Kremenek 2009-12-04 06:57:49 +00:00
Родитель 6dea404751
Коммит bfb4fc9ebc
2 изменённых файлов: 6 добавлений и 7 удалений

Просмотреть файл

@ -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);