From: Marek Polacek Date: Wed, 13 Jul 2022 00:18:56 +0000 (-0400) Subject: libcpp: Avoid pessimizing std::move [PR106272] X-Git-Tag: basepoints/gcc-14~5518 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=86a15b266a7284f3aa1b12494a475f31416b981d;p=thirdparty%2Fgcc.git libcpp: Avoid pessimizing std::move [PR106272] std::move in a return statement can prevent the NRVO: PR106272 reports that we have two such cases in class label_text's member functions. We have -Wpessimizing-move that's supposed to detect problematic std::move uses, but in this case it didn't trigger. I've filed PR106276 to track that. PR preprocessor/106272 libcpp/ChangeLog: * include/line-map.h (class label_text): Don't std::move in a return statement. --- diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h index c6379ce25b8..c434a246b13 100644 --- a/libcpp/include/line-map.h +++ b/libcpp/include/line-map.h @@ -1873,13 +1873,13 @@ public: longer-lived owner. */ static label_text borrow (const char *buffer) { - return std::move (label_text (const_cast (buffer), false)); + return label_text (const_cast (buffer), false); } /* Create a label_text instance that takes ownership of BUFFER. */ static label_text take (char *buffer) { - return std::move (label_text (buffer, true)); + return label_text (buffer, true); } /* Take ownership of the buffer, copying if necessary. */