summaryrefslogtreecommitdiffstats
path: root/clang/lib/Analysis/MemRegion.cpp
diff options
context:
space:
mode:
authorZhongxing Xu <xuzhongxing@gmail.com>2009-06-23 03:50:30 +0000
committerZhongxing Xu <xuzhongxing@gmail.com>2009-06-23 03:50:30 +0000
commitcbfc7d6c2ee1ab88c3349947ea2ef691ec60a854 (patch)
tree8fd1ec51111eb93b4ff0a8e8c9cb13843c187196 /clang/lib/Analysis/MemRegion.cpp
parent1a195b264f3a8f3cd776a9184f90b7ef2025a182 (diff)
downloadbcm5719-llvm-cbfc7d6c2ee1ab88c3349947ea2ef691ec60a854.tar.gz
bcm5719-llvm-cbfc7d6c2ee1ab88c3349947ea2ef691ec60a854.zip
MemRegionManager: Migrate logic for getCodeTextRegion() over to using
trait-based MemRegion creation. llvm-svn: 73941
Diffstat (limited to 'clang/lib/Analysis/MemRegion.cpp')
-rw-r--r--clang/lib/Analysis/MemRegion.cpp32
1 files changed, 4 insertions, 28 deletions
diff --git a/clang/lib/Analysis/MemRegion.cpp b/clang/lib/Analysis/MemRegion.cpp
index 619d1617d00..9bd93cd6eb9 100644
--- a/clang/lib/Analysis/MemRegion.cpp
+++ b/clang/lib/Analysis/MemRegion.cpp
@@ -129,14 +129,14 @@ void ElementRegion::Profile(llvm::FoldingSetNodeID& ID) const {
}
void CodeTextRegion::ProfileRegion(llvm::FoldingSetNodeID& ID, const void* data,
- QualType t) {
+ QualType t, const MemRegion*) {
ID.AddInteger(MemRegion::CodeTextRegionKind);
ID.AddPointer(data);
ID.Add(t);
}
void CodeTextRegion::Profile(llvm::FoldingSetNodeID& ID) const {
- CodeTextRegion::ProfileRegion(ID, Data, LocationType);
+ CodeTextRegion::ProfileRegion(ID, Data, LocationType, superRegion);
}
//===----------------------------------------------------------------------===//
@@ -275,35 +275,11 @@ MemRegionManager::getElementRegion(QualType elementType, SVal Idx,
CodeTextRegion* MemRegionManager::getCodeTextRegion(const FunctionDecl* fd,
QualType t) {
- llvm::FoldingSetNodeID ID;
- CodeTextRegion::ProfileRegion(ID, fd, t);
- void* InsertPos;
- MemRegion* data = Regions.FindNodeOrInsertPos(ID, InsertPos);
- CodeTextRegion* R = cast_or_null<CodeTextRegion>(data);
-
- if (!R) {
- R = (CodeTextRegion*) A.Allocate<CodeTextRegion>();
- new (R) CodeTextRegion(fd, t, getCodeRegion());
- Regions.InsertNode(R, InsertPos);
- }
-
- return R;
+ return getRegion<CodeTextRegion>(fd, t);
}
CodeTextRegion* MemRegionManager::getCodeTextRegion(SymbolRef sym, QualType t) {
- llvm::FoldingSetNodeID ID;
- CodeTextRegion::ProfileRegion(ID, sym, t);
- void* InsertPos;
- MemRegion* data = Regions.FindNodeOrInsertPos(ID, InsertPos);
- CodeTextRegion* R = cast_or_null<CodeTextRegion>(data);
-
- if (!R) {
- R = (CodeTextRegion*) A.Allocate<CodeTextRegion>();
- new (R) CodeTextRegion(sym, t, getCodeRegion());
- Regions.InsertNode(R, InsertPos);
- }
-
- return R;
+ return getRegion<CodeTextRegion>(sym, t);
}
/// getSymbolicRegion - Retrieve or create a "symbolic" memory region.
OpenPOWER on IntegriCloud