aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/Analysis/PathSensitive/SVals.h29
-rw-r--r--lib/Analysis/BasicStore.cpp5
-rw-r--r--lib/Analysis/GRSimpleVals.cpp2
-rw-r--r--lib/Analysis/RegionStore.cpp6
-rw-r--r--lib/Analysis/SVals.cpp9
-rw-r--r--lib/Analysis/SimpleConstraintManager.cpp1
6 files changed, 1 insertions, 51 deletions
diff --git a/include/clang/Analysis/PathSensitive/SVals.h b/include/clang/Analysis/PathSensitive/SVals.h
index d16b3390eb..70c0d09a03 100644
--- a/include/clang/Analysis/PathSensitive/SVals.h
+++ b/include/clang/Analysis/PathSensitive/SVals.h
@@ -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) {}
diff --git a/lib/Analysis/BasicStore.cpp b/lib/Analysis/BasicStore.cpp
index 9047d9d8a9..cf8d3176c4 100644
--- a/lib/Analysis/BasicStore.cpp
+++ b/lib/Analysis/BasicStore.cpp
@@ -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.");
diff --git a/lib/Analysis/GRSimpleVals.cpp b/lib/Analysis/GRSimpleVals.cpp
index 107bea705c..413ef7b5ba 100644
--- a/lib/Analysis/GRSimpleVals.cpp
+++ b/lib/Analysis/GRSimpleVals.cpp
@@ -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);
}
diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp
index 215fe1c281..40f7c48131 100644
--- a/lib/Analysis/RegionStore.cpp
+++ b/lib/Analysis/RegionStore.cpp
@@ -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.
diff --git a/lib/Analysis/SVals.cpp b/lib/Analysis/SVals.cpp
index 875fd36747..8eaeda4b7d 100644
--- a/lib/Analysis/SVals.cpp
+++ b/lib/Analysis/SVals.cpp
@@ -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;
diff --git a/lib/Analysis/SimpleConstraintManager.cpp b/lib/Analysis/SimpleConstraintManager.cpp
index feaad191ef..f79dba0cc5 100644
--- a/lib/Analysis/SimpleConstraintManager.cpp
+++ b/lib/Analysis/SimpleConstraintManager.cpp
@@ -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;