aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTed Kremenek <kremenek@apple.com>2008-02-11 23:12:59 +0000
committerTed Kremenek <kremenek@apple.com>2008-02-11 23:12:59 +0000
commit8158a0e2c43705fca1218dae029ff9549e36f166 (patch)
tree1c19ef4bd0f4e8cd76521108b1b310c6356a1930
parente7a37307d2ee589143d8fd83504cd4a0005d453f (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.h4
-rw-r--r--Analysis/ValueState.cpp3
-rw-r--r--Analysis/ValueState.h7
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();