[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