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:
parent
a864a67185
commit
d2ab38e3f4
|
@ -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);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue