diff options
author | Marek Polacek <polacek@redhat.com> | 2022-07-12 20:18:56 -0400 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2022-07-13 14:22:09 -0400 |
commit | 86a15b266a7284f3aa1b12494a475f31416b981d (patch) | |
tree | 8fabb6fd5fb4352fbbe2832d1bd3260f98848ec5 /libcpp | |
parent | f70c18524221dcefa6cd26cee7b55503181bd912 (diff) | |
download | gcc-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')
-rw-r--r-- | libcpp/include/line-map.h | 4 |
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. */ |