diff options
author | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-06-23 03:50:30 +0000 |
---|---|---|
committer | Zhongxing Xu <xuzhongxing@gmail.com> | 2009-06-23 03:50:30 +0000 |
commit | cbfc7d6c2ee1ab88c3349947ea2ef691ec60a854 (patch) | |
tree | 8fd1ec51111eb93b4ff0a8e8c9cb13843c187196 /clang/lib/Analysis/MemRegion.cpp | |
parent | 1a195b264f3a8f3cd776a9184f90b7ef2025a182 (diff) | |
download | bcm5719-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.cpp | 32 |
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. |