X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FVMCore%2FLeakDetector.cpp;h=1bf9171553837c7fc0e8d0aaa78d9908c2fa9f08;hb=30794269d5ba15613d4e013d9fe1eb9e892fa6da;hp=41e08737f83c9d51a199a3fd9f4e59499596c924;hpb=4ee451de366474b9c228b4e5fa573795a715216d;p=oota-llvm.git diff --git a/lib/VMCore/LeakDetector.cpp b/lib/VMCore/LeakDetector.cpp index 41e08737f83..1bf91715538 100644 --- a/lib/VMCore/LeakDetector.cpp +++ b/lib/VMCore/LeakDetector.cpp @@ -12,10 +12,10 @@ //===----------------------------------------------------------------------===// #include "llvm/Support/LeakDetector.h" +#include "llvm/ADT/SmallPtrSet.h" #include "llvm/Support/Compiler.h" #include "llvm/Support/Streams.h" #include "llvm/Value.h" -#include using namespace llvm; namespace { @@ -31,7 +31,7 @@ namespace { template struct VISIBILITY_HIDDEN LeakDetectorImpl { - LeakDetectorImpl(const char* const name) : Cache(0), Name(name) { } + explicit LeakDetectorImpl(const char* const name) : Cache(0), Name(name) { } // Because the most common usage pattern, by far, is to add a // garbage object, then remove it immediately, we optimize this @@ -60,7 +60,7 @@ namespace { if (!Ts.empty()) { cerr << "Leaked " << Name << " objects found: " << Message << ":\n"; - for (typename std::set::iterator I = Ts.begin(), + for (typename SmallPtrSet::iterator I = Ts.begin(), E = Ts.end(); I != E; ++I) { cerr << "\t"; PrinterTrait::print(*I); @@ -74,27 +74,27 @@ namespace { } private: - std::set Ts; + SmallPtrSet Ts; const T* Cache; const char* const Name; }; - LeakDetectorImpl *Objects; - LeakDetectorImpl *LLVMObjects; + static LeakDetectorImpl *Objects; + static LeakDetectorImpl *LLVMObjects; - LeakDetectorImpl &getObjects() { + static LeakDetectorImpl &getObjects() { if (Objects == 0) Objects = new LeakDetectorImpl("GENERIC"); return *Objects; } - LeakDetectorImpl &getLLVMObjects() { + static LeakDetectorImpl &getLLVMObjects() { if (LLVMObjects == 0) LLVMObjects = new LeakDetectorImpl("LLVM"); return *LLVMObjects; } - void clearGarbage() { + static void clearGarbage() { delete Objects; delete LLVMObjects; Objects = 0;