[PATCH] gdb/build: Fix Wpessimizing-move in clang build

Simon Marchi simon.marchi@polymtl.ca
Fri Jan 28 14:58:59 GMT 2022



On 2022-01-28 09:33, Enze Li wrote:
> On Fri, 2022-01-28 at 09:25 -0500, Simon Marchi wrote:
>>
>>
>> On 2022-01-28 08:41, Enze Li via Gdb-patches wrote:
>>> When building with clang, I run into an error:
>>>
>>> ...
>>> tui/tui-disasm.c:138:25: error: moving a temporary object prevents
>>> copy
>>> elision [-Werror,-Wpessimizing-move]
>>>       tal.addr_string = std::move (gdb_dis_out.release ());
>>>                         ^
>>> tui/tui-disasm.c:138:25: note: remove std::move call here
>>>       tal.addr_string = std::move (gdb_dis_out.release ());
>>>                         ^~~~~~~~~~~                      ~
>>> ...
>>>
>>> The error above is caused by the recent commit 5d10a2041eb8 ("gdb:
>>> add
>>> string_file::release method").
>>>
>>> Fix this by removing std::move.
>>>
>>> Build on x86_64-linux with clang 13.0.0.
>>> ---
>>>  gdb/tui/tui-disasm.c | 2 +-
>>>  1 file changed, 1 insertion(+), 1 deletion(-)
>>>
>>> diff --git a/gdb/tui/tui-disasm.c b/gdb/tui/tui-disasm.c
>>> index 445503a5af9..70f7429d32b 100644
>>> --- a/gdb/tui/tui-disasm.c
>>> +++ b/gdb/tui/tui-disasm.c
>>> @@ -135,7 +135,7 @@ tui_disassemble (struct gdbarch *gdbarch,
>>>        /* And capture the address the instruction is at.  */
>>>        tal.addr = orig_pc;
>>>        print_address (gdbarch, orig_pc, &gdb_dis_out);
>>> -      tal.addr_string = std::move (gdb_dis_out.release ());
>>> +      tal.addr_string = gdb_dis_out.release ();
>>>  
>>>        if (addr_size != nullptr)
>>>         {
>>
>> Oh, thanks!  In fact, this is the spot that did prompt me to add this
>> release method, so it's a silly oversight on my part to not remove
>> the
>> std::move.  Thanks patch is ok.  Do you have push access?
> 
> Yes.  Should I push it now?

Yes, please go ahead.

Simon


More information about the Gdb-patches mailing list