[AsmPrinter] Destroy allocated DIEAbbrevs on teardown.
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 28 May 2015 12:55:43 +0000 (12:55 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 28 May 2015 12:55:43 +0000 (12:55 +0000)
DIEAbbrev contains a SmallVector that can leak for overly large abbrevs. They
used to be owned by the DIE, but after the recent refactoring DWARFFile
allocates its own abbrevs.

Leak found by asan.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238418 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/AsmPrinter/DwarfFile.cpp

index cafaabb..1060366 100644 (file)
@@ -20,7 +20,10 @@ namespace llvm {
 DwarfFile::DwarfFile(AsmPrinter *AP, StringRef Pref, BumpPtrAllocator &DA)
     : Asm(AP), StrPool(DA, *Asm, Pref) {}
 
-DwarfFile::~DwarfFile() {}
+DwarfFile::~DwarfFile() {
+  for (DIEAbbrev *Abbrev : Abbreviations)
+    Abbrev->~DIEAbbrev();
+}
 
 // Define a unique number for the abbreviation.
 //