Initialize tracked local variables to undefined.
llvm-svn: 54716
This commit is contained in:
parent
b036db8e66
commit
dccd9883c4
|
@ -202,10 +202,15 @@ const ValueState* GRExprEngine::getInitialState() {
|
|||
|
||||
ScopedDecl *SD = const_cast<ScopedDecl*>(I->first);
|
||||
if (VarDecl* VD = dyn_cast<VarDecl>(SD)) {
|
||||
if (VD->hasGlobalStorage() || isa<ParmVarDecl>(VD)) {
|
||||
RVal X = RVal::GetSymbolValue(SymMgr, VD);
|
||||
// Initialize globals and parameters to symbolic values.
|
||||
// Initialize local variables to undefined.
|
||||
RVal X = (VD->hasGlobalStorage() || isa<ParmVarDecl>(VD) ||
|
||||
isa<ImplicitParamDecl>(VD))
|
||||
? RVal::GetSymbolValue(SymMgr, VD)
|
||||
: UndefinedVal();
|
||||
|
||||
StateMgr.SetRVal(StateImpl, lval::DeclVal(VD), X);
|
||||
}
|
||||
|
||||
} else if (ImplicitParamDecl *IPD = dyn_cast<ImplicitParamDecl>(SD)) {
|
||||
RVal X = RVal::GetSymbolValue(SymMgr, IPD);
|
||||
StateMgr.SetRVal(StateImpl, lval::DeclVal(IPD), X);
|
||||
|
|
|
@ -18,7 +18,8 @@ using namespace clang;
|
|||
|
||||
SymbolID SymbolManager::getSymbol(VarDecl* D) {
|
||||
|
||||
assert (isa<ParmVarDecl>(D) || D->hasGlobalStorage());
|
||||
assert (isa<ParmVarDecl>(D) || isa<ImplicitParamDecl>(D) ||
|
||||
D->hasGlobalStorage());
|
||||
|
||||
llvm::FoldingSetNodeID profile;
|
||||
|
||||
|
|
Loading…
Reference in New Issue