From be38d7cb8ca1faba6d909ced97c079906e9ce277 Mon Sep 17 00:00:00 2001 From: Rafael Espindola Date: Tue, 26 May 2015 00:32:28 +0000 Subject: [PATCH] Call the destructors of the MCSections. They now contain the fragments. If we don't call the destructors the fragments leak. Found by an asan bot. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@238161 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/MC/MCContext.cpp | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/lib/MC/MCContext.cpp b/lib/MC/MCContext.cpp index 968fd26f326..0a453cdb46b 100644 --- a/lib/MC/MCContext.cpp +++ b/lib/MC/MCContext.cpp @@ -10,6 +10,7 @@ #include "llvm/MC/MCContext.h" #include "llvm/ADT/SmallString.h" #include "llvm/ADT/Twine.h" +#include "llvm/MC/MCAssembler.h" #include "llvm/MC/MCAsmInfo.h" #include "llvm/MC/MCDwarf.h" #include "llvm/MC/MCLabel.h" @@ -54,6 +55,13 @@ MCContext::MCContext(const MCAsmInfo *mai, const MCRegisterInfo *mri, } MCContext::~MCContext() { + // Call the destructors so the fragments are freed + for (auto &I : ELFUniquingMap) + I.second->~MCSectionELF(); + for (auto &I : COFFUniquingMap) + I.second->~MCSectionCOFF(); + for (auto &I : MachOUniquingMap) + I.second->~MCSectionMachO(); if (AutoReset) reset(); -- 2.34.1