For inter-procedural analysis, predecessor node may be in another function.

So we should use the current program point.

llvm-svn: 91989
This commit is contained in:
Zhongxing Xu 2009-12-23 08:54:57 +00:00
parent a864a67185
commit d2ab38e3f4
1 changed files with 3 additions and 3 deletions

View File

@ -213,9 +213,9 @@ void GRCoreEngine::HandleBlockEdge(const BlockEdge& L, ExplodedNode* Pred) {
CFGBlock* Blk = L.getDst();
// Check if we are entering the EXIT block.
if (Blk == &(Pred->getLocationContext()->getCFG()->getExit())) {
if (Blk == &(L.getLocationContext()->getCFG()->getExit())) {
assert (Pred->getLocationContext()->getCFG()->getExit().size() == 0
assert (L.getLocationContext()->getCFG()->getExit().size() == 0
&& "EXIT block cannot contain Stmts.");
// Process the final state transition.
@ -447,7 +447,7 @@ GRStmtNodeBuilder::generateNodeInternal(const Stmt* S, const GRState* state,
ProgramPoint::Kind K,
const void *tag) {
const ProgramPoint &L = GetProgramPoint(S, K, Pred->getLocationContext(),tag);
const ProgramPoint &L = GetProgramPoint(S, K, Pred->getLocationContext(),tag);
return generateNodeInternal(L, state, Pred);
}