diff options
author | Ted Kremenek <kremenek@apple.com> | 2008-02-11 23:12:59 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2008-02-11 23:12:59 +0000 |
commit | 8158a0e2c43705fca1218dae029ff9549e36f166 (patch) | |
tree | 1c19ef4bd0f4e8cd76521108b1b310c6356a1930 | |
parent | e7a37307d2ee589143d8fd83504cd4a0005d453f (diff) |
Consolidated use of BumpPtrAllocator shared by various ImmutableSet/ImmutableMap
factories.
Fixed a horrible bug in lval:DeclVar::classof(RValue* V); we weren't checking
V was an LValue, allowing nonlval::ConcereteInts to match isa<lval::DeclVar>.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@46976 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | Analysis/RValues.h | 4 | ||||
-rw-r--r-- | Analysis/ValueState.cpp | 3 | ||||
-rw-r--r-- | Analysis/ValueState.h | 7 |
3 files changed, 9 insertions, 5 deletions
diff --git a/Analysis/RValues.h b/Analysis/RValues.h index 92f847b8dd..9aa2f11e19 100644 --- a/Analysis/RValues.h +++ b/Analysis/RValues.h @@ -459,7 +459,7 @@ namespace lval { } static inline bool classof(const RValue* V) { - return V->getSubKind() == SymbolValKind; + return isa<LValue>(V) && V->getSubKind() == SymbolValKind; } }; @@ -481,7 +481,7 @@ namespace lval { // Implement isa<T> support. static inline bool classof(const RValue* V) { - return V->getSubKind() == DeclValKind; + return isa<LValue>(V) && V->getSubKind() == DeclValKind; } }; diff --git a/Analysis/ValueState.cpp b/Analysis/ValueState.cpp index 724f64f04f..f51175fdca 100644 --- a/Analysis/ValueState.cpp +++ b/Analysis/ValueState.cpp @@ -71,7 +71,7 @@ ValueStateManager::RemoveDeadBindings(ValueState St, Stmt* Loc, if (Liveness.isLive(Loc, I.getKey())) WList.push_back(I.getKey()); - llvm::SmallPtrSet<ValueDecl*, 10> Marked; + llvm::SmallPtrSet<ValueDecl*, 10> Marked; while (!WList.empty()) { ValueDecl* V = WList.back(); @@ -254,7 +254,6 @@ LValue ValueStateManager::GetLValue(ValueState St, Expr* E) { return cast<LValue>(GetValue(St, E)); } - ValueState ValueStateManager::SetValue(ValueState St, Expr* E, bool isBlkExpr, const RValue& V) { diff --git a/Analysis/ValueState.h b/Analysis/ValueState.h index 5f2b58c18c..8ea699452a 100644 --- a/Analysis/ValueState.h +++ b/Analysis/ValueState.h @@ -231,7 +231,12 @@ private: public: ValueStateManager(ASTContext& Ctx, llvm::BumpPtrAllocator& alloc) - : ValMgr(Ctx, alloc), Alloc(alloc) {} + : ISetFactory(alloc), + EXFactory(alloc), + VBFactory(alloc), + CNEFactory(alloc), + CEFactory(alloc), + ValMgr(Ctx, alloc), Alloc(alloc) {} ValueState getInitialState(); |