[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 cafaabba5a365ccd4683f419e3bb5c682c6950d7..1060366a8ba313671e1e2cfba5c5af6b189c5ffb 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.
 //