From 47feae5dd61d891d4c1382b9784738111b4f9396 Mon Sep 17 00:00:00 2001 From: Rui Ueyama Date: Tue, 19 Nov 2019 15:04:21 +0900 Subject: [PATCH] Use lld::make to make TpiSource objects In lld we rarely use std::unique_ptr but instead allocate new instances using lld::make() so that they are deallocated at the end of linking. This patch changes existing code so that that follows the convention. Differential Revision: https://reviews.llvm.org/D70420 --- lld/COFF/DebugTypes.cpp | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/lld/COFF/DebugTypes.cpp b/lld/COFF/DebugTypes.cpp index 6c7d70e..0960f16 100644 --- a/lld/COFF/DebugTypes.cpp +++ b/lld/COFF/DebugTypes.cpp @@ -10,6 +10,7 @@ #include "Driver.h" #include "InputFiles.h" #include "lld/Common/ErrorHandler.h" +#include "lld/Common/Memory.h" #include "llvm/DebugInfo/CodeView/TypeRecord.h" #include "llvm/DebugInfo/PDB/GenericError.h" #include "llvm/DebugInfo/PDB/Native/InfoStream.h" @@ -91,29 +92,25 @@ public: }; } // namespace -static std::vector> GC; - -TpiSource::TpiSource(TpiKind k, const ObjFile *f) : kind(k), file(f) { - GC.push_back(std::unique_ptr(this)); -} +TpiSource::TpiSource(TpiKind k, const ObjFile *f) : kind(k), file(f) {} TpiSource *makeTpiSource(const ObjFile *f) { - return new TpiSource(TpiSource::Regular, f); + return make(TpiSource::Regular, f); } TpiSource *makeUseTypeServerSource(const ObjFile *f, const TypeServer2Record *ts) { TypeServerSource::enqueue(f, *ts); - return new UseTypeServerSource(f, ts); + return make(f, ts); } TpiSource *makePrecompSource(const ObjFile *f) { - return new PrecompSource(f); + return make(f); } TpiSource *makeUsePrecompSource(const ObjFile *f, const PrecompRecord *precomp) { - return new UsePrecompSource(f, precomp); + return make(f, precomp); } template <> @@ -260,7 +257,7 @@ Expected TypeServerSource::getInstance(MemoryBufferRef m) { // All PDB Files should have an Info stream. if (!info) return info.takeError(); - return new TypeServerSource(m, session.release()); + return make(m, session.release()); } } // namespace coff -- 2.7.4