]> git.ipfire.org Git - thirdparty/binutils-gdb.git/commitdiff
gdb/dwarf2/read.c: remove pessimizing std::move
authorSimon Marchi <simon.marchi@efficios.com>
Mon, 22 Apr 2024 19:01:37 +0000 (15:01 -0400)
committerSimon Marchi <simon.marchi@polymtl.ca>
Tue, 23 Apr 2024 14:40:12 +0000 (10:40 -0400)
When building with this clang:

    $ c++ --version
    FreeBSD clang version 16.0.6 (https://github.com/llvm/llvm-project.git llvmorg-16.0.6-0-g7cbf1a259152)

I see:

    $ gmake
      CXX    dwarf2/read.o
    /home/smarchi/src/binutils-gdb/gdb/dwarf2/read.c:4890:6: error: moving a temporary object prevents copy elision [-Werror,-Wpessimizing-move]
                                            std::move (thread_storage.release_parent_map ()));
                                            ^
    /home/smarchi/src/binutils-gdb/gdb/dwarf2/read.c:4890:6: note: remove std::move call here
                                            std::move (thread_storage.release_parent_map ()));
                                            ^~~~~~~~~~~                                    ~

The compiler seems right, there is not need to std::move the result of
`release_parent_map ()`, it's already going to be an rvalue.  Remove the
std::move.

The issue isn't FreeBSD-specific, I see it on Linux as well when
building hwith clang, I just noticed it on a FreeBSD build first.

Change-Id: I7aa20a4db56c799f20d838ad08099a01653bba19
Approved-By: Tom Tromey <tom@tromey.com>
gdb/dwarf2/read.c

index af69e1d9d9e92aac1decb02727675b62e2ecaf79..96e51bb42b0f52f884a0059995358274cb7cb5c7 100644 (file)
@@ -4885,7 +4885,7 @@ cooked_index_debug_info::process_cus (size_t task_number, unit_iterator first,
   m_results[task_number] = result_type (thread_storage.release (),
                                        complaint_handler.release (),
                                        std::move (errors),
-                                       std::move (thread_storage.release_parent_map ()));
+                                       thread_storage.release_parent_map ());
 }
 
 void