Remove loc::FuncVal.

llvm-svn: 69577
This commit is contained in:
Zhongxing Xu 2009-04-20 06:35:22 +00:00
parent 396b9c380a
commit 3070210377
6 changed files with 1 additions and 51 deletions

View File

@ -362,7 +362,7 @@ public:
namespace loc {
enum Kind { GotoLabelKind, MemRegionKind, FuncValKind, ConcreteIntKind };
enum Kind { GotoLabelKind, MemRegionKind, ConcreteIntKind };
class GotoLabel : public Loc {
public:
@ -415,33 +415,6 @@ public:
}
};
class FuncVal : public Loc {
public:
FuncVal(const FunctionDecl* fd) : Loc(FuncValKind, fd) {}
FunctionDecl* getDecl() const {
return static_cast<FunctionDecl*>(Data);
}
inline bool operator==(const FuncVal& R) const {
return getDecl() == R.getDecl();
}
inline bool operator!=(const FuncVal& R) const {
return getDecl() != R.getDecl();
}
// Implement isa<T> support.
static inline bool classof(const SVal* V) {
return V->getBaseKind() == LocKind &&
V->getSubKind() == FuncValKind;
}
static inline bool classof(const Loc* V) {
return V->getSubKind() == FuncValKind;
}
};
class ConcreteInt : public Loc {
public:
ConcreteInt(const llvm::APSInt& V) : Loc(ConcreteIntKind, &V) {}

View File

@ -200,8 +200,6 @@ SVal BasicStoreManager::getLValueField(const GRState* St, SVal Base,
switch(BaseL.getSubKind()) {
case loc::GotoLabelKind:
case loc::FuncValKind:
// Technically we can get here if people do funny things with casts.
return UndefinedVal();
case loc::MemRegionKind:
@ -234,7 +232,6 @@ SVal BasicStoreManager::getLValueElement(const GRState* St, SVal Base,
switch(BaseL.getSubKind()) {
case loc::GotoLabelKind:
case loc::FuncValKind:
// Technically we can get here if people do funny things with casts.
return UndefinedVal();
@ -338,8 +335,6 @@ SVal BasicStoreManager::Retrieve(const GRState* state, Loc loc, QualType T) {
// they are doing a quick scan through their Locs (potentially to
// invalidate their bindings). Just return Undefined.
return UndefinedVal();
case loc::FuncValKind:
return loc;
default:
assert (false && "Invalid Loc.");

View File

@ -307,7 +307,6 @@ SVal GRSimpleVals::EvalEQ(GRExprEngine& Eng, Loc L, Loc R) {
// Fall-through.
case loc::FuncValKind:
case loc::GotoLabelKind:
return NonLoc::MakeIntTruthVal(BasicVals, L == R);
}
@ -356,7 +355,6 @@ SVal GRSimpleVals::EvalNE(GRExprEngine& Eng, Loc L, Loc R) {
// Fall through:
}
case loc::FuncValKind:
case loc::GotoLabelKind:
return NonLoc::MakeIntTruthVal(BasicVals, L != R);
}

View File

@ -365,7 +365,6 @@ SVal RegionStoreManager::getLValueFieldOrIvar(const GRState* St, SVal Base,
break;
case loc::GotoLabelKind:
case loc::FuncValKind:
// These are anormal cases. Flag an undefined value.
return UndefinedVal();
@ -662,11 +661,6 @@ SVal RegionStoreManager::Retrieve(const GRState* St, Loc L, QualType T) {
if (isa<loc::ConcreteInt>(L))
return UndefinedVal();
// FIXME: Should this be refactored into GRExprEngine or GRStateManager?
// It seems that all StoreManagers would do the same thing here.
if (isa<loc::FuncVal>(L))
return L;
const MemRegion* MR = cast<loc::MemRegionVal>(L).getRegion();
// We return unknown for symbolic region for now. This might be improved.

View File

@ -31,10 +31,6 @@ using llvm::APSInt;
//===----------------------------------------------------------------------===//
const FunctionDecl* SVal::getAsFunctionDecl() const {
if (const loc::FuncVal* FV = dyn_cast<loc::FuncVal>(this)) {
return FV->getDecl();
}
if (const loc::MemRegionVal* X = dyn_cast<loc::MemRegionVal>(this)) {
const MemRegion* R = X->getRegion();
if (const CodeTextRegion* CTR = dyn_cast<CodeTextRegion>(R)) {
@ -481,11 +477,6 @@ void Loc::print(llvm::raw_ostream& Out) const {
Out << '&' << cast<loc::MemRegionVal>(this)->getRegion()->getString();
break;
case loc::FuncValKind:
Out << "function "
<< cast<loc::FuncVal>(this)->getDecl()->getIdentifier()->getName();
break;
default:
assert (false && "Pretty-printing not implemented for this Loc.");
break;

View File

@ -116,7 +116,6 @@ SimpleConstraintManager::AssumeAux(const GRState* St, Loc Cond, bool Assumption,
// FALL-THROUGH.
}
case loc::FuncValKind:
case loc::GotoLabelKind:
isFeasible = Assumption;
return St;