[llvm] r208400 - [asan] Stop leaking X86Operands.
David Blaikie
dblaikie at gmail.com
Fri May 9 08:15:10 PDT 2014
On Fri, May 9, 2014 at 2:48 AM, Benjamin Kramer
<benny.kra at googlemail.com> wrote:
> Author: d0k
> Date: Fri May 9 04:48:03 2014
> New Revision: 208400
>
> URL: http://llvm.org/viewvc/llvm-project?rev=208400&view=rev
> Log:
> [asan] Stop leaking X86Operands.
>
> Modified:
> llvm/trunk/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp
>
> Modified: llvm/trunk/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp?rev=208400&r1=208399&r2=208400&view=diff
> ==============================================================================
> --- llvm/trunk/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp (original)
> +++ llvm/trunk/lib/Target/X86/AsmParser/X86AsmInstrumentation.cpp Fri May 9 04:48:03 2014
> @@ -192,8 +192,8 @@ void X86AddressSanitizer64::InstrumentMe
> Inst.addOperand(MCOperand::CreateReg(X86::RSP));
>
> const MCExpr *Disp = MCConstantExpr::Create(-128, Ctx);
> - X86Operand *Op =
> - X86Operand::CreateMem(0, Disp, X86::RSP, 0, 1, SMLoc(), SMLoc());
> + std::unique_ptr<X86Operand> Op(
> + X86Operand::CreateMem(0, Disp, X86::RSP, 0, 1, SMLoc(), SMLoc()));
> Op->addMemOperands(Inst, 5);
This is a curious API... where does 'Op' go after these two lines? Is
it destroyed, or is its ownership somehow transferred (I don't see any
std::move, etc)
Why would we be creating temporary X86Operands that are disposed of
like this? (I guess the answer is in "addMemOperands" somehow)
> EmitInstruction(Out, Inst);
> }
> @@ -221,8 +221,8 @@ void X86AddressSanitizer64::InstrumentMe
> Inst.addOperand(MCOperand::CreateReg(X86::RSP));
>
> const MCExpr *Disp = MCConstantExpr::Create(128, Ctx);
> - X86Operand *Op =
> - X86Operand::CreateMem(0, Disp, X86::RSP, 0, 1, SMLoc(), SMLoc());
> + std::unique_ptr<X86Operand> Op(
> + X86Operand::CreateMem(0, Disp, X86::RSP, 0, 1, SMLoc(), SMLoc()));
> Op->addMemOperands(Inst, 5);
> EmitInstruction(Out, Inst);
> }
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list