diff options
author | Ted Kremenek <kremenek@apple.com> | 2010-12-23 07:22:02 +0000 |
---|---|---|
committer | Ted Kremenek <kremenek@apple.com> | 2010-12-23 07:22:02 +0000 |
commit | 3a8f40ed5e86a97e07d255976a95d2f3ad792b6d (patch) | |
tree | 117254bbdb2b4fbee6911be73d204642e1f5e17e /lib/GR/BlockCounter.cpp | |
parent | 9ef6537a894c33003359b1f9b9676e9178e028b7 (diff) |
Rename headers: 'clang/GR' 'clang/EntoSA' and
update Makefile.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122493 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/GR/BlockCounter.cpp')
-rw-r--r-- | lib/GR/BlockCounter.cpp | 86 |
1 files changed, 0 insertions, 86 deletions
diff --git a/lib/GR/BlockCounter.cpp b/lib/GR/BlockCounter.cpp deleted file mode 100644 index dadf707cf2..0000000000 --- a/lib/GR/BlockCounter.cpp +++ /dev/null @@ -1,86 +0,0 @@ -//==- BlockCounter.h - ADT for counting block visits -------------*- C++ -*-// -// -// The LLVM Compiler Infrastructure -// -// This file is distributed under the University of Illinois Open Source -// License. See LICENSE.TXT for details. -// -//===----------------------------------------------------------------------===// -// -// This file defines BlockCounter, an abstract data type used to count -// the number of times a given block has been visited along a path -// analyzed by CoreEngine. -// -//===----------------------------------------------------------------------===// - -#include "clang/GR/PathSensitive/BlockCounter.h" -#include "llvm/ADT/ImmutableMap.h" - -using namespace clang; -using namespace ento; - -namespace { - -class CountKey { - const StackFrameContext *CallSite; - unsigned BlockID; - -public: - CountKey(const StackFrameContext *CS, unsigned ID) - : CallSite(CS), BlockID(ID) {} - - bool operator==(const CountKey &RHS) const { - return (CallSite == RHS.CallSite) && (BlockID == RHS.BlockID); - } - - bool operator<(const CountKey &RHS) const { - return (CallSite == RHS.CallSite) ? (BlockID < RHS.BlockID) - : (CallSite < RHS.CallSite); - } - - void Profile(llvm::FoldingSetNodeID &ID) const { - ID.AddPointer(CallSite); - ID.AddInteger(BlockID); - } -}; - -} - -typedef llvm::ImmutableMap<CountKey, unsigned> CountMap; - -static inline CountMap GetMap(void* D) { - return CountMap(static_cast<CountMap::TreeTy*>(D)); -} - -static inline CountMap::Factory& GetFactory(void* F) { - return *static_cast<CountMap::Factory*>(F); -} - -unsigned BlockCounter::getNumVisited(const StackFrameContext *CallSite, - unsigned BlockID) const { - CountMap M = GetMap(Data); - CountMap::data_type* T = M.lookup(CountKey(CallSite, BlockID)); - return T ? *T : 0; -} - -BlockCounter::Factory::Factory(llvm::BumpPtrAllocator& Alloc) { - F = new CountMap::Factory(Alloc); -} - -BlockCounter::Factory::~Factory() { - delete static_cast<CountMap::Factory*>(F); -} - -BlockCounter -BlockCounter::Factory::IncrementCount(BlockCounter BC, - const StackFrameContext *CallSite, - unsigned BlockID) { - return BlockCounter(GetFactory(F).add(GetMap(BC.Data), - CountKey(CallSite, BlockID), - BC.getNumVisited(CallSite, BlockID)+1).getRoot()); -} - -BlockCounter -BlockCounter::Factory::GetEmptyCounter() { - return BlockCounter(GetFactory(F).getEmptyMap().getRoot()); -} |