From cc204ead96bd99426d53c68c30d6b693bbab25a3 Mon Sep 17 00:00:00 2001 From: Richard Smith Date: Fri, 16 Jan 2026 20:27:59 -0800 Subject: [PATCH] Allow NRVO in `InventClangArgs`. (#6624) Attempt to avoid an unnecessary `SmallVector` copy. --- toolchain/check/cpp/type_mapping.cpp | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/toolchain/check/cpp/type_mapping.cpp b/toolchain/check/cpp/type_mapping.cpp index b099541135af..2e41d4035989 100644 --- a/toolchain/check/cpp/type_mapping.cpp +++ b/toolchain/check/cpp/type_mapping.cpp @@ -385,14 +385,16 @@ auto InventClangArg(Context& context, SemIR::InstId arg_id) -> clang::Expr* { auto InventClangArgs(Context& context, llvm::ArrayRef arg_ids) -> std::optional> { - llvm::SmallVector arg_exprs; - arg_exprs.reserve(arg_ids.size()); + std::optional> arg_exprs; + arg_exprs.emplace(); + arg_exprs->reserve(arg_ids.size()); for (SemIR::InstId arg_id : arg_ids) { auto* arg_expr = InventClangArg(context, arg_id); if (!arg_expr) { - return std::nullopt; + arg_exprs = std::nullopt; + return arg_exprs; } - arg_exprs.push_back(arg_expr); + arg_exprs->push_back(arg_expr); } return arg_exprs; }