diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-04-15 05:53:26 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-04-15 05:53:26 +0000 |
commit | ec528ee93f031bfb15853c8896d9a4da4d9bf6e9 (patch) | |
tree | 65f7fb7c4fdef6558ac35355a0d287a6b41f8370 /llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | |
parent | 2e159fb6db4eb6d0b88cfc380e72a7049af9265e (diff) | |
download | bcm5719-llvm-ec528ee93f031bfb15853c8896d9a4da4d9bf6e9.tar.gz bcm5719-llvm-ec528ee93f031bfb15853c8896d9a4da4d9bf6e9.zip |
Use unique_ptr for the result of Registry entries.
llvm-svn: 206248
Diffstat (limited to 'llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp')
-rw-r--r-- | llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp | 12 |
1 files changed, 5 insertions, 7 deletions
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<GCStrategy*,GCMetadataPrinter*> gcp_map_type; +typedef DenseMap<GCStrategy*, std::unique_ptr<GCMetadataPrinter>> 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<GCMetadataPrinter> 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)); |