From ec528ee93f031bfb15853c8896d9a4da4d9bf6e9 Mon Sep 17 00:00:00 2001 From: David Blaikie Date: Tue, 15 Apr 2014 05:53:26 +0000 Subject: Use unique_ptr for the result of Registry entries. llvm-svn: 206248 --- llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 12 +++++------- 1 file changed, 5 insertions(+), 7 deletions(-) (limited to 'llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp') diff --git a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp index 7d64cdd03f9..0797822d3ec 100644 --- a/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp +++ b/llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp @@ -62,7 +62,7 @@ STATISTIC(EmittedInsts, "Number of machine instrs printed"); char AsmPrinter::ID = 0; -typedef DenseMap gcp_map_type; +typedef DenseMap> gcp_map_type; static gcp_map_type &getGCMap(void *&P) { if (P == 0) P = new gcp_map_type(); @@ -114,8 +114,6 @@ AsmPrinter::~AsmPrinter() { if (GCMetadataPrinters != 0) { gcp_map_type &GCMap = getGCMap(GCMetadataPrinters); - for (gcp_map_type::iterator I = GCMap.begin(), E = GCMap.end(); I != E; ++I) - delete I->second; delete &GCMap; GCMetadataPrinters = 0; } @@ -2238,7 +2236,7 @@ GCMetadataPrinter *AsmPrinter::GetOrCreateGCPrinter(GCStrategy &S) { gcp_map_type &GCMap = getGCMap(GCMetadataPrinters); gcp_map_type::iterator GCPI = GCMap.find(&S); if (GCPI != GCMap.end()) - return GCPI->second; + return GCPI->second.get(); const char *Name = S.getName().c_str(); @@ -2246,10 +2244,10 @@ GCMetadataPrinter *AsmPrinter::GetOrCreateGCPrinter(GCStrategy &S) { I = GCMetadataPrinterRegistry::begin(), E = GCMetadataPrinterRegistry::end(); I != E; ++I) if (strcmp(Name, I->getName()) == 0) { - GCMetadataPrinter *GMP = I->instantiate(); + std::unique_ptr GMP = I->instantiate(); GMP->S = &S; - GCMap.insert(std::make_pair(&S, GMP)); - return GMP; + auto IterBool = GCMap.insert(std::make_pair(&S, std::move(GMP))); + return IterBool.first->second.get(); } report_fatal_error("no GCMetadataPrinter registered for GC: " + Twine(Name)); -- cgit v1.2.3