[clang] [clang] Add explicit std::move(...) to avoid a few copies (PR #180478)
via cfe-commits
cfe-commits at lists.llvm.org
Mon Feb 9 00:01:06 PST 2026
llvmbot wrote:
<!--LLVM PR SUMMARY COMMENT-->
@llvm/pr-subscribers-clang
Author: None (serge-sans-paille)
<details>
<summary>Changes</summary>
Moving an std::shared_ptr is always profitable (marginally).
Moving a clang::LayoutOverrideSource::Layout may be profitable depending on the size of the underlying llvm::SmallVector.
Changes suggested by performance-use-std-move from #<!-- -->179467
---
Full diff: https://github.com/llvm/llvm-project/pull/180478.diff
2 Files Affected:
- (modified) clang/lib/Frontend/ASTUnit.cpp (+1-1)
- (modified) clang/lib/Frontend/LayoutOverrideSource.cpp (+1-1)
``````````diff
diff --git a/clang/lib/Frontend/ASTUnit.cpp b/clang/lib/Frontend/ASTUnit.cpp
index ee22e16bc202d..60433fd7a2f39 100644
--- a/clang/lib/Frontend/ASTUnit.cpp
+++ b/clang/lib/Frontend/ASTUnit.cpp
@@ -1476,7 +1476,7 @@ ASTUnit::create(std::shared_ptr<CompilerInvocation> CI,
ConfigureDiags(Diags, *AST, CaptureDiagnostics);
IntrusiveRefCntPtr<llvm::vfs::FileSystem> VFS =
createVFSFromCompilerInvocation(*CI, *Diags);
- AST->DiagOpts = DiagOpts;
+ AST->DiagOpts = std::move(DiagOpts);
AST->Diagnostics = Diags;
AST->FileSystemOpts = CI->getFileSystemOpts();
AST->Invocation = std::move(CI);
diff --git a/clang/lib/Frontend/LayoutOverrideSource.cpp b/clang/lib/Frontend/LayoutOverrideSource.cpp
index 0a60e00e5cb12..6912b9c112006 100644
--- a/clang/lib/Frontend/LayoutOverrideSource.cpp
+++ b/clang/lib/Frontend/LayoutOverrideSource.cpp
@@ -186,7 +186,7 @@ LayoutOverrideSource::LayoutOverrideSource(StringRef Filename) {
// Flush the last type/layout, if there is one.
if (!CurrentType.empty())
- Layouts[CurrentType] = CurrentLayout;
+ Layouts[CurrentType] = std::move(CurrentLayout);
}
bool
``````````
</details>
https://github.com/llvm/llvm-project/pull/180478
More information about the cfe-commits
mailing list