diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2015-01-22 21:43:01 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2015-01-22 21:43:01 +0000 |
commit | cb36becbeb84826dcfff19243051d97c71d57211 (patch) | |
tree | dade12f2f84d38f07a4543d99755cb0521939bcf /llvm/lib | |
parent | 8d536973a22ef1ad5c4ff1a120633cc028313f57 (diff) | |
download | bcm5719-llvm-cb36becbeb84826dcfff19243051d97c71d57211.tar.gz bcm5719-llvm-cb36becbeb84826dcfff19243051d97c71d57211.zip |
Remove dead leak detector parts that fell out of use in r224703.
llvm-svn: 226867
Diffstat (limited to 'llvm/lib')
-rw-r--r-- | llvm/lib/IR/LLVMContextImpl.cpp | 3 | ||||
-rw-r--r-- | llvm/lib/IR/LLVMContextImpl.h | 4 | ||||
-rw-r--r-- | llvm/lib/IR/LeaksContext.h | 103 |
3 files changed, 1 insertions, 109 deletions
diff --git a/llvm/lib/IR/LLVMContextImpl.cpp b/llvm/lib/IR/LLVMContextImpl.cpp index 880e1c1bcad..3370bdb0f88 100644 --- a/llvm/lib/IR/LLVMContextImpl.cpp +++ b/llvm/lib/IR/LLVMContextImpl.cpp @@ -97,8 +97,7 @@ LLVMContextImpl::~LLVMContextImpl() { delete I; #include "llvm/IR/Metadata.def" - // Free the constants. This is important to do here to ensure that they are - // freed before the LeakDetector is torn down. + // Free the constants. std::for_each(ExprConstants.map_begin(), ExprConstants.map_end(), DropFirst()); std::for_each(ArrayConstants.map_begin(), ArrayConstants.map_end(), diff --git a/llvm/lib/IR/LLVMContextImpl.h b/llvm/lib/IR/LLVMContextImpl.h index 3b3be0f9982..4d3fa4462a3 100644 --- a/llvm/lib/IR/LLVMContextImpl.h +++ b/llvm/lib/IR/LLVMContextImpl.h @@ -17,7 +17,6 @@ #include "AttributeImpl.h" #include "ConstantsContext.h" -#include "LeaksContext.h" #include "llvm/ADT/APFloat.h" #include "llvm/ADT/APInt.h" #include "llvm/ADT/ArrayRef.h" @@ -392,9 +391,6 @@ public: ConstantInt *TheTrueVal; ConstantInt *TheFalseVal; - - LeakDetectorImpl<Value> LLVMObjects; - LeakDetectorImpl<Metadata> LLVMMDObjects; // Basic type instances. Type VoidTy, LabelTy, HalfTy, FloatTy, DoubleTy, MetadataTy; diff --git a/llvm/lib/IR/LeaksContext.h b/llvm/lib/IR/LeaksContext.h deleted file mode 100644 index 47704fa1a76..00000000000 --- a/llvm/lib/IR/LeaksContext.h +++ /dev/null @@ -1,103 +0,0 @@ -//===- LeaksContext.h - LeadDetector Implementation ------------*- 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 various helper methods and classes used by -// LLVMContextImpl for leaks detectors. -// -//===----------------------------------------------------------------------===// - -#ifndef LLVM_LIB_IR_LEAKSCONTEXT_H -#define LLVM_LIB_IR_LEAKSCONTEXT_H - -#include "llvm/ADT/SmallPtrSet.h" -#include "llvm/IR/Metadata.h" -#include "llvm/IR/Value.h" -#include "llvm/Support/raw_ostream.h" - -namespace llvm { - -template <class T> -struct PrinterTrait { - static void print(const T* P) { errs() << P; } -}; - -template<> -struct PrinterTrait<Value> { - static void print(const Value* P) { errs() << *P; } -}; - -template <> struct PrinterTrait<Metadata> { - static void print(const Metadata *P) { P->print(errs()); } -}; - -template <typename T> -struct LeakDetectorImpl { - explicit LeakDetectorImpl(const char* const name = "") : - Cache(nullptr), Name(name) { } - - void clear() { - Cache = nullptr; - Ts.clear(); - } - - void setName(const char* n) { - Name = n; - } - - // Because the most common usage pattern, by far, is to add a - // garbage object, then remove it immediately, we optimize this - // case. When an object is added, it is not added to the set - // immediately, it is added to the CachedValue Value. If it is - // immediately removed, no set search need be performed. - void addGarbage(const T* o) { - assert(Ts.count(o) == 0 && "Object already in set!"); - if (Cache) { - assert(Cache != o && "Object already in set!"); - Ts.insert(Cache); - } - Cache = o; - } - - void removeGarbage(const T* o) { - if (o == Cache) - Cache = nullptr; // Cache hit - else - Ts.erase(o); - } - - bool hasGarbage(const std::string& Message) { - addGarbage(nullptr); // Flush the Cache - - assert(!Cache && "No value should be cached anymore!"); - - if (!Ts.empty()) { - errs() << "Leaked " << Name << " objects found: " << Message << ":\n"; - for (typename SmallPtrSet<const T*, 8>::iterator I = Ts.begin(), - E = Ts.end(); I != E; ++I) { - errs() << '\t'; - PrinterTrait<T>::print(*I); - errs() << '\n'; - } - errs() << '\n'; - - return true; - } - - return false; - } - -private: - SmallPtrSet<const T*, 8> Ts; - const T* Cache; - const char* Name; -}; - -} - -#endif |