Give ReturnExpr a target only when initialization is in-place (#6570)

Also clarify and enforce that `ConversionTarget::init_id` is used only
as storage for in-place initialization, and correspondingly rename it to
`storage_id`.
This commit is contained in:
Geoff Romer
2026-01-13 01:20:15 +00:00
committed by GitHub
parent 93c7c9ad96
commit e1ec8d42d1
194 changed files with 575 additions and 556 deletions
+4
View File
@@ -174,6 +174,10 @@ auto BuildReturnWithExpr(Context& context, SemIR::LocId loc_id,
out_param_id = call_params[init_form.index.index];
CARBON_CHECK(out_param_id.has_value());
expr_id = Initialize(context, loc_id, out_param_id, expr_id);
if (!SemIR::InitRepr::ForType(context.sem_ir(), return_type_id)
.MightBeInPlace()) {
out_param_id = SemIR::InstId::None;
}
break;
}
case CARBON_KIND(SemIR::RefForm ref_form): {