<div dir="ltr">Could you use make_unique, rather than "unique_ptr u(new T())"?<br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Mon, Apr 26, 2021 at 10:52 AM Tim Renouf via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org">llvm-commits@lists.llvm.org</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
Author: Tim Renouf<br>
Date: 2021-04-26T18:50:21+01:00<br>
New Revision: 1128311a19179ceca799ff0fbc4dd206ab56e560<br>
<br>
URL: <a href="https://github.com/llvm/llvm-project/commit/1128311a19179ceca799ff0fbc4dd206ab56e560" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/1128311a19179ceca799ff0fbc4dd206ab56e560</a><br>
DIFF: <a href="https://github.com/llvm/llvm-project/commit/1128311a19179ceca799ff0fbc4dd206ab56e560.diff" rel="noreferrer" target="_blank">https://github.com/llvm/llvm-project/commit/1128311a19179ceca799ff0fbc4dd206ab56e560.diff</a><br>
<br>
LOG: [AMDGPU][llvm-objdump] Fix memory leak in recent commit<br>
<br>
Hopefully stops sanitizer fail in AMDGPU llvm-objdump test.<br>
<br>
Change-Id: I7331151d1cb65292bd06b6ae283349fe7231cf6b<br>
<br>
Added: <br>
<br>
<br>
Modified: <br>
    llvm/tools/llvm-objdump/llvm-objdump.cpp<br>
<br>
Removed: <br>
<br>
<br>
<br>
################################################################################<br>
diff  --git a/llvm/tools/llvm-objdump/llvm-objdump.cpp b/llvm/tools/llvm-objdump/llvm-objdump.cpp<br>
index 4b2ca6560677..2d5a7287204a 100644<br>
--- a/llvm/tools/llvm-objdump/llvm-objdump.cpp<br>
+++ b/llvm/tools/llvm-objdump/llvm-objdump.cpp<br>
@@ -975,11 +975,11 @@ collectLocalBranchTargets(ArrayRef<uint8_t> Bytes, const MCInstrAnalysis *MIA,<br>
 // Create an MCSymbolizer for the target and add it to the MCDisassembler.<br>
 // This is currently only used on AMDGPU, and assumes the format of the<br>
 // void * argument passed to AMDGPU's createMCSymbolizer.<br>
-static void addSymbolizer(MCContext &Ctx, const Target *Target,<br>
-                          StringRef TripleName, MCDisassembler *DisAsm,<br>
-                          uint64_t SectionAddr, ArrayRef<uint8_t> Bytes,<br>
-                          SectionSymbolsTy &Symbols,<br>
-                          std::vector<std::string *> &SynthesizedLabelNames) {<br>
+static void addSymbolizer(<br>
+    MCContext &Ctx, const Target *Target, StringRef TripleName,<br>
+    MCDisassembler *DisAsm, uint64_t SectionAddr, ArrayRef<uint8_t> Bytes,<br>
+    SectionSymbolsTy &Symbols,<br>
+    std::vector<std::unique_ptr<std::string>> &SynthesizedLabelNames) {<br>
<br>
   std::unique_ptr<MCRelocationInfo> RelInfo(<br>
       Target->createMCRelocationInfo(TripleName, Ctx));<br>
@@ -1015,8 +1015,9 @@ static void addSymbolizer(MCContext &Ctx, const Target *Target,<br>
                     LabelAddrs.begin());<br>
   // Add the labels.<br>
   for (unsigned LabelNum = 0; LabelNum != LabelAddrs.size(); ++LabelNum) {<br>
-    SynthesizedLabelNames.push_back(<br>
-        new std::string((Twine("L") + Twine(LabelNum)).str()));<br>
+    std::unique_ptr<std::string> Name(new std::string);<br>
+    *Name = (Twine("L") + Twine(LabelNum)).str();<br>
+    SynthesizedLabelNames.push_back(std::move(Name));<br>
     Symbols.push_back(SymbolInfoTy(<br>
         LabelAddrs[LabelNum], *SynthesizedLabelNames.back(), ELF::STT_NOTYPE));<br>
   }<br>
@@ -1193,7 +1194,7 @@ static void disassembleObject(const Target *TheTarget, const ObjectFile *Obj,<br>
     ArrayRef<uint8_t> Bytes = arrayRefFromStringRef(<br>
         unwrapOrError(Section.getContents(), Obj->getFileName()));<br>
<br>
-    std::vector<std::string *> SynthesizedLabelNames;<br>
+    std::vector<std::unique_ptr<std::string>> SynthesizedLabelNames;<br>
     if (Obj->isELF() && Obj->getArch() == Triple::amdgcn) {<br>
       // AMDGPU disassembler uses symbolizer for printing labels<br>
       addSymbolizer(Ctx, TheTarget, TripleName, DisAsm, SectionAddr, Bytes,<br>
<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank">llvm-commits@lists.llvm.org</a><br>
<a href="https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank">https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote></div>