diff --git a/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h b/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h index 6c9c9576ba38a1921f746f8dfd0c90c32d4e7c2a..be1b9cecca8975365404a500ad11b7b91fdb53b2 100644 --- a/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h +++ b/include/clang/StaticAnalyzer/Core/PathSensitive/SVals.h @@ -136,6 +136,8 @@ public: /// return that expression. Otherwise return NULL. const SymExpr *getAsSymbolicExpression() const; + const SymExpr* getAsSymExpr() const; + const MemRegion *getAsRegion() const; void dumpToStream(raw_ostream &OS) const; diff --git a/lib/StaticAnalyzer/Core/SVals.cpp b/lib/StaticAnalyzer/Core/SVals.cpp index 309b6ea4242aabd6c723a518c00c5fefa06f9e33..52e52d6d59db44362252814bd39051de227b2b34 100644 --- a/lib/StaticAnalyzer/Core/SVals.cpp +++ b/lib/StaticAnalyzer/Core/SVals.cpp @@ -114,6 +114,13 @@ const SymExpr *SVal::getAsSymbolicExpression() const { return getAsSymbol(); } +const SymExpr* SVal::getAsSymExpr() const { + const SymExpr* Sym = getAsSymbol(); + if (!Sym) + Sym = getAsSymbolicExpression(); + return Sym; +} + const MemRegion *SVal::getAsRegion() const { if (const loc::MemRegionVal *X = dyn_cast<loc::MemRegionVal>(this)) return X->getRegion();