Allow NRVO in InventClangArgs. (#6624)

Attempt to avoid an unnecessary `SmallVector` copy.
This commit is contained in:
Richard Smith
2026-01-17 04:27:59 +00:00
committed by GitHub
parent 773b7136ef
commit cc204ead96
+6 -4
View File
@@ -385,14 +385,16 @@ auto InventClangArg(Context& context, SemIR::InstId arg_id) -> clang::Expr* {
auto InventClangArgs(Context& context, llvm::ArrayRef<SemIR::InstId> arg_ids)
-> std::optional<llvm::SmallVector<clang::Expr*>> {
llvm::SmallVector<clang::Expr*> arg_exprs;
arg_exprs.reserve(arg_ids.size());
std::optional<llvm::SmallVector<clang::Expr*>> 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;
}