[llvm] r281718 - Trying to fix Mangler memory leak in TargetLoweringObjectFile.

Mehdi Amini via llvm-commits llvm-commits at lists.llvm.org
Fri Sep 16 08:35:00 PDT 2016


> On Sep 16, 2016, at 4:50 AM, Eric Liu via llvm-commits <llvm-commits at lists.llvm.org> wrote:
> 
> Author: ioeric
> Date: Fri Sep 16 06:50:57 2016
> New Revision: 281718
> 
> URL: http://llvm.org/viewvc/llvm-project?rev=281718&view=rev
> Log:
> Trying to fix Mangler memory leak in TargetLoweringObjectFile.
> 
> Summary:
> `TargetLoweringObjectFile` can be re-used and thus `TargetLoweringObjectFile::Initialize()`
> can be called multiple times causing `Mang` pointer memory leak.
> 
> Reviewers: echristo
> 
> Subscribers: llvm-commits, mehdi_amini
> 
> Differential Revision: https://reviews.llvm.org/D24659
> 
> Modified:
>    llvm/trunk/include/llvm/Target/TargetLoweringObjectFile.h
>    llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp
> 
> Modified: llvm/trunk/include/llvm/Target/TargetLoweringObjectFile.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/Target/TargetLoweringObjectFile.h?rev=281718&r1=281717&r2=281718&view=diff
> ==============================================================================
> --- llvm/trunk/include/llvm/Target/TargetLoweringObjectFile.h (original)
> +++ llvm/trunk/include/llvm/Target/TargetLoweringObjectFile.h Fri Sep 16 06:50:57 2016
> @@ -38,7 +38,7 @@ class TargetLoweringObjectFile : public
>   MCContext *Ctx;
> 
>   /// Name-mangler for global names.
> -  Mangler *Mang;
> +  Mangler *Mang = nullptr;
> 
>   TargetLoweringObjectFile(
>     const TargetLoweringObjectFile&) = delete;
> 
> Modified: llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp?rev=281718&r1=281717&r2=281718&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp (original)
> +++ llvm/trunk/lib/Target/TargetLoweringObjectFile.cpp Fri Sep 16 06:50:57 2016
> @@ -43,6 +43,8 @@ using namespace llvm;
> void TargetLoweringObjectFile::Initialize(MCContext &ctx,
>                                           const TargetMachine &TM) {
>   Ctx = &ctx;
> +  // `Initialize` can be called more than once.
> +  if (Mang != nullptr) delete Mang;
>   Mang = new Mangler();

New? Delete?
Any reason not to use a make_unique?

—
Mehdi



More information about the llvm-commits mailing list