mirror of
https://github.com/carbon-language/carbon-lang.git
synced 2026-09-24 20:20:10 +01:00
Allow NRVO in InventClangArgs. (#6624)
Attempt to avoid an unnecessary `SmallVector` copy.
This commit is contained in:
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user