From 1552e50011cd267afa25d17e87268130f7422bed Mon Sep 17 00:00:00 2001 From: Benjamin Kramer Date: Thu, 22 Jan 2015 21:43:01 +0000 Subject: [PATCH] Remove dead leak detector parts that fell out of use in r224703. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@226867 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/IR/LLVMContextImpl.cpp | 3 +- lib/IR/LLVMContextImpl.h | 4 -- lib/IR/LeaksContext.h | 103 ------------------------------------- 3 files changed, 1 insertion(+), 109 deletions(-) delete mode 100644 lib/IR/LeaksContext.h diff --git a/lib/IR/LLVMContextImpl.cpp b/lib/IR/LLVMContextImpl.cpp index 880e1c1bcad..3370bdb0f88 100644 --- a/lib/IR/LLVMContextImpl.cpp +++ b/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/lib/IR/LLVMContextImpl.h b/lib/IR/LLVMContextImpl.h index 3b3be0f9982..4d3fa4462a3 100644 --- a/lib/IR/LLVMContextImpl.h +++ b/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 LLVMObjects; - LeakDetectorImpl LLVMMDObjects; // Basic type instances. Type VoidTy, LabelTy, HalfTy, FloatTy, DoubleTy, MetadataTy; diff --git a/lib/IR/LeaksContext.h b/lib/IR/LeaksContext.h deleted file mode 100644 index 47704fa1a76..00000000000 --- a/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 -struct PrinterTrait { - static void print(const T* P) { errs() << P; } -}; - -template<> -struct PrinterTrait { - static void print(const Value* P) { errs() << *P; } -}; - -template <> struct PrinterTrait { - static void print(const Metadata *P) { P->print(errs()); } -}; - -template -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::iterator I = Ts.begin(), - E = Ts.end(); I != E; ++I) { - errs() << '\t'; - PrinterTrait::print(*I); - errs() << '\n'; - } - errs() << '\n'; - - return true; - } - - return false; - } - -private: - SmallPtrSet Ts; - const T* Cache; - const char* Name; -}; - -} - -#endif