aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2009-03-30 18:45:36 +0000
committerTed Kremenek <kremenek@apple.com>2009-03-30 18:45:36 +0000
commit248fd2bc2443196dfab07f032ccbe1e43eaffe2e (patch)
tree2dd292c0549e46d95910ff048e69160bd4245cb6
parenta53eb7fa80dd5eff7d03685e55b1f77ec4735a43 (diff)
downloadllvm-248fd2bc2443196dfab07f032ccbe1e43eaffe2e.zip
llvm-248fd2bc2443196dfab07f032ccbe1e43eaffe2e.tar.gz
llvm-248fd2bc2443196dfab07f032ccbe1e43eaffe2e.tar.bz2
Simplify more code by using SVal::getAsSymbol() instead of
loc::SymbolVal/nonloc::SymbolVal probing. llvm-svn: 68049
-rw-r--r--clang/lib/Analysis/GRState.cpp18
1 files changed, 6 insertions, 12 deletions
diff --git a/clang/lib/Analysis/GRState.cpp b/clang/lib/Analysis/GRState.cpp
index 7399ad4..82cb1f2 100644
--- a/clang/lib/Analysis/GRState.cpp
+++ b/clang/lib/Analysis/GRState.cpp
@@ -243,12 +243,9 @@ bool ScanReachableSymbols::scan(nonloc::CompoundVal val) {
bool ScanReachableSymbols::scan(SVal val) {
if (loc::MemRegionVal *X = dyn_cast<loc::MemRegionVal>(&val))
return scan(X->getRegion());
-
- if (loc::SymbolVal *X = dyn_cast<loc::SymbolVal>(&val))
- return visitor.VisitSymbol(X->getSymbol());
-
- if (nonloc::SymbolVal *X = dyn_cast<nonloc::SymbolVal>(&val))
- return visitor.VisitSymbol(X->getSymbol());
+
+ if (SymbolRef Sym = val.getAsSymbol())
+ return visitor.VisitSymbol(Sym);
if (nonloc::CompoundVal *X = dyn_cast<nonloc::CompoundVal>(&val))
return scan(*X);
@@ -304,12 +301,9 @@ bool GRStateManager::isEqual(const GRState* state, Expr* Ex,
if (nonloc::ConcreteInt* X = dyn_cast<nonloc::ConcreteInt>(&V))
return X->getValue() == Y;
- if (nonloc::SymbolVal* X = dyn_cast<nonloc::SymbolVal>(&V))
- return ConstraintMgr->isEqual(state, X->getSymbol(), Y);
-
- if (loc::SymbolVal* X = dyn_cast<loc::SymbolVal>(&V))
- return ConstraintMgr->isEqual(state, X->getSymbol(), Y);
-
+ if (SymbolRef Sym = V.getAsSymbol())
+ return ConstraintMgr->isEqual(state, Sym, Y);
+
return false;
}