From: Zhongxing Xu Date: Sun, 26 Oct 2008 02:27:21 +0000 (+0000) Subject: Remove loc::StringLiteralVal. Now we allocate regions for string literals in the... X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=197fa58ab40e3fee2137715e96d9bb1c59340837;p=clang Remove loc::StringLiteralVal. Now we allocate regions for string literals in the Store. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58182 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/clang/Analysis/PathSensitive/SVals.h b/include/clang/Analysis/PathSensitive/SVals.h index e3ca9689fe..b37233c35f 100644 --- a/include/clang/Analysis/PathSensitive/SVals.h +++ b/include/clang/Analysis/PathSensitive/SVals.h @@ -290,7 +290,7 @@ public: namespace loc { enum Kind { SymbolValKind, GotoLabelKind, MemRegionKind, FuncValKind, - ConcreteIntKind, StringLiteralValKind }; + ConcreteIntKind }; class SymbolVal : public Loc { public: @@ -412,23 +412,6 @@ public: } }; -class StringLiteralVal : public Loc { -public: - StringLiteralVal(StringLiteral* L) : Loc(StringLiteralValKind, L) {} - - StringLiteral* getLiteral() const { return (StringLiteral*) Data; } - - // Implement isa support. - static inline bool classof(const SVal* V) { - return V->getBaseKind() == LocKind && - V->getSubKind() == StringLiteralValKind; - } - - static inline bool classof(const Loc* V) { - return V->getSubKind() == StringLiteralValKind; - } -}; - } // end clang::loc namespace } // end clang namespace diff --git a/lib/Analysis/BasicConstraintManager.cpp b/lib/Analysis/BasicConstraintManager.cpp index 8617ba650f..ea13ea30f2 100644 --- a/lib/Analysis/BasicConstraintManager.cpp +++ b/lib/Analysis/BasicConstraintManager.cpp @@ -151,7 +151,6 @@ const GRState* BasicConstraintManager::AssumeAux(const GRState* St, Loc Cond, case loc::FuncValKind: case loc::GotoLabelKind: - case loc::StringLiteralValKind: isFeasible = Assumption; return St; diff --git a/lib/Analysis/BasicStore.cpp b/lib/Analysis/BasicStore.cpp index 67d919a6d6..8895954502 100644 --- a/lib/Analysis/BasicStore.cpp +++ b/lib/Analysis/BasicStore.cpp @@ -125,7 +125,6 @@ SVal BasicStoreManager::getLValueField(const GRState* St, SVal Base, break; case loc::ConcreteIntKind: - case loc::StringLiteralValKind: // While these seem funny, this can happen through casts. // FIXME: What we should return is the field offset. For example, // add the field offset to the integer value. That way funny things @@ -178,10 +177,6 @@ SVal BasicStoreManager::Retrieve(Store St, Loc LV, QualType T) { case loc::FuncValKind: return LV; - case loc::StringLiteralValKind: - // FIXME: Implement better support for fetching characters from strings. - return UnknownVal(); - default: assert (false && "Invalid Loc."); break; diff --git a/lib/Analysis/GRSimpleVals.cpp b/lib/Analysis/GRSimpleVals.cpp index d0055e5665..a2a59f3e92 100644 --- a/lib/Analysis/GRSimpleVals.cpp +++ b/lib/Analysis/GRSimpleVals.cpp @@ -285,7 +285,6 @@ SVal GRSimpleVals::EvalEQ(GRExprEngine& Eng, Loc L, Loc R) { case loc::MemRegionKind: case loc::FuncValKind: case loc::GotoLabelKind: - case loc::StringLiteralValKind: return NonLoc::MakeIntTruthVal(BasicVals, L == R); } @@ -344,7 +343,6 @@ SVal GRSimpleVals::EvalNE(GRExprEngine& Eng, Loc L, Loc R) { case loc::MemRegionKind: case loc::FuncValKind: case loc::GotoLabelKind: - case loc::StringLiteralValKind: return NonLoc::MakeIntTruthVal(BasicVals, L != R); } diff --git a/lib/Analysis/RegionStore.cpp b/lib/Analysis/RegionStore.cpp index 84f543ede4..0a31bc8f5d 100644 --- a/lib/Analysis/RegionStore.cpp +++ b/lib/Analysis/RegionStore.cpp @@ -149,7 +149,6 @@ SVal RegionStoreManager::getLValueField(const GRState* St, SVal Base, return UndefinedVal(); case loc::ConcreteIntKind: - case loc::StringLiteralValKind: // While these seem funny, this can happen through casts. // FIXME: What we should return is the field offset. For example, // add the field offset to the integer value. That way funny things @@ -227,9 +226,6 @@ SVal RegionStoreManager::Retrieve(Store S, Loc L, QualType T) { case loc::FuncValKind: return L; - case loc::StringLiteralValKind: - return UnknownVal(); - default: assert(false && "Invalid Location"); break; diff --git a/lib/Analysis/SVals.cpp b/lib/Analysis/SVals.cpp index 2382b759e5..236d857450 100644 --- a/lib/Analysis/SVals.cpp +++ b/lib/Analysis/SVals.cpp @@ -261,10 +261,6 @@ SVal SVal::GetSymbolValue(SymbolManager& SymMgr, VarDecl* D) { Loc Loc::MakeVal(AddrLabelExpr* E) { return loc::GotoLabel(E->getLabel()); } -Loc Loc::MakeVal(StringLiteral* S) { - return loc::StringLiteralVal(S); -} - //===----------------------------------------------------------------------===// // Pretty-Printing. //===----------------------------------------------------------------------===// @@ -386,12 +382,6 @@ void Loc::print(std::ostream& Out) const { << cast(this)->getDecl()->getIdentifier()->getName(); break; - case loc::StringLiteralValKind: - Out << "literal \"" - << cast(this)->getLiteral()->getStrData() - << "\""; - break; - default: assert (false && "Pretty-printing not implemented for this Loc."); break; @@ -517,12 +507,6 @@ void Loc::print(llvm::raw_ostream& Out) const { << cast(this)->getDecl()->getIdentifier()->getName(); break; - case loc::StringLiteralValKind: - Out << "literal \"" - << cast(this)->getLiteral()->getStrData() - << "\""; - break; - default: assert (false && "Pretty-printing not implemented for this Loc."); break;