<div dir="ltr"><div>Hi, </div>Here is a small patch that fixes (mostly innocent) leak in lib/MC/MCAsmStreamer.cpp,<div>please review.</div><div>See also <a href="http://llvm.org/bugs/show_bug.cgi?id=19521">http://llvm.org/bugs/show_bug.cgi?id=19521</a></div>
<div><br></div><div><div><div>Index: lib/MC/MCAsmStreamer.cpp</div><div>===================================================================</div><div>--- lib/MC/MCAsmStreamer.cpp    (revision 207084)</div><div>+++ lib/MC/MCAsmStreamer.cpp    (working copy)</div>
<div>@@ -9,6 +9,7 @@</div><div> </div><div> #include "llvm/MC/MCStreamer.h"</div><div> #include "llvm/ADT/SmallString.h"</div><div>+#include "llvm/ADT/STLExtras.h"</div><div> #include "llvm/ADT/StringExtras.h"</div>
<div> #include "llvm/ADT/Twine.h"</div><div> #include "llvm/MC/MCAsmBackend.h"</div><div>@@ -76,7 +77,9 @@</div><div>     if (InstPrinter && IsVerboseAsm)</div><div>       InstPrinter->setCommentStream(CommentStream);</div>
<div>   }</div><div>-  ~MCAsmStreamer() {}</div><div>+  ~MCAsmStreamer() {</div><div>+    DeleteContainerSeconds(SymbolMap);</div><div>+  }</div><div> </div><div>   inline void EmitEOL() {</div><div>     // If we don't have any comments, just emit a \n.</div>
</div></div><div><br></div><div><br></div><div>=================================</div><div>Leak report: </div><div><div>Direct leak of 80 byte(s) in 1 object(s) allocated from:</div><div>    #0 0x65d4b0 in operator new(unsigned long) llvm/projects/compiler-rt/lib/asan/asan_new_delete.cc:62</div>
<div>    #1 0x20d9f9e in (anonymous namespace)::MCAsmStreamer::getOrCreateSymbolData(llvm::MCSymbol const*) llvm/lib/MC/MCAsmStreamer.cpp:1476</div><div>    #2 0xd4a029 in (anonymous namespace)::ARMAsmParser::onLabelParsed(llvm::MCSymbol*) llvm/lib/Target/ARM/AsmParser/ARMAsmParser.cpp:8328</div>
<div>    #3 0x2924e87 in (anonymous namespace)::AsmParser::parseStatement((anonymous namespace)::ParseStatementInfo&) llvm/lib/MC/MCParser/AsmParser.cpp:1306</div><div>    #4 0x29123a1 in (anonymous namespace)::AsmParser::Run(bool, bool) llvm/lib/MC/MCParser/AsmParser.cpp:651</div>
<div>    #5 0x18bc27f in llvm::AsmPrinter::EmitInlineAsm(llvm::StringRef, llvm::MDNode const*, llvm::InlineAsm::AsmDialect) const llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp:151</div><div>    #6 0x18bfc1e in llvm::AsmPrinter::EmitInlineAsm(llvm::MachineInstr const*) const llvm/lib/CodeGen/AsmPrinter/AsmPrinterInlineAsm.cpp:487</div>
<div>    #7 0x189aa80 in llvm::AsmPrinter::EmitFunctionBody() llvm/lib/CodeGen/AsmPrinter/AsmPrinter.cpp:781</div><div>    #8 0xa0d144 in runOnMachineFunction llvm/include/llvm/CodeGen/AsmPrinter.h:193</div><div>    #9 0xa0d144 in llvm::ARMAsmPrinter::runOnMachineFunction(llvm::MachineFunction&) llvm/lib/Target/ARM/ARMAsmPrinter.cpp:100</div>
<div>    #10 0x1b0566b in llvm::MachineFunctionPass::runOnFunction(llvm::Function&) llvm/lib/CodeGen/MachineFunctionPass.cpp:33</div><div>    #11 0x2025905 in llvm::FPPassManager::runOnFunction(llvm::Function&) llvm/lib/IR/LegacyPassManager.cpp:1540</div>
<div>    #12 0x2025dd5 in llvm::FPPassManager::runOnModule(llvm::Module&) llvm/lib/IR/LegacyPassManager.cpp:1560</div><div>    #13 0x2026aac in runOnModule llvm/lib/IR/LegacyPassManager.cpp:1618</div><div>    #14 0x2026aac in llvm::legacy::PassManagerImpl::run(llvm::Module&) llvm/lib/IR/LegacyPassManager.cpp:1725</div>
<div>    #15 0x683cf7 in compileModule llvm/tools/llc/llc.cpp:355</div><div>    #16 0x683cf7 in main llvm/tools/llc/llc.cpp:201</div></div><div><br></div></div>