aboutsummaryrefslogtreecommitdiff
path: root/libcpp/include
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2022-07-12 20:18:56 -0400
committerMarek Polacek <polacek@redhat.com>2022-07-13 14:22:09 -0400
commit86a15b266a7284f3aa1b12494a475f31416b981d (patch)
tree8fabb6fd5fb4352fbbe2832d1bd3260f98848ec5 /libcpp/include
parentf70c18524221dcefa6cd26cee7b55503181bd912 (diff)
downloadgcc-86a15b266a7284f3aa1b12494a475f31416b981d.zip
gcc-86a15b266a7284f3aa1b12494a475f31416b981d.tar.gz
gcc-86a15b266a7284f3aa1b12494a475f31416b981d.tar.bz2
libcpp: Avoid pessimizing std::move [PR106272]
std::move in a return statement can prevent the NRVO: <https://developers.redhat.com/blog/2019/04/12/understanding-when-not-to-stdmove-in-c> 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.
Diffstat (limited to 'libcpp/include')
-rw-r--r--libcpp/include/line-map.h4
1 files changed, 2 insertions, 2 deletions
diff --git a/libcpp/include/line-map.h b/libcpp/include/line-map.h
index c6379ce..c434a24 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 <char *> (buffer), false));
+ return label_text (const_cast <char *> (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. */