Replace form insts with actions (#7100)

See
[here](https://docs.google.com/document/d/1rWcueFwIfZox6GKVGxiUG4cBzjrZ6djXiIDGyJDtrE4/edit?tab=t.0)
for the design doc.

This also removes the default value of the `result_type_inst_id`
parameter of `HandleAction`, moves it before the action in the parameter
list, and documents it. This solves two problems:
- The default made it easy to forget, leading to unnecessary
`TypeOfInst` instructions.
- When it was present, putting it after the fairly "bulky" action
argument tended to make the callsite harder to read.
This commit is contained in:
Geoff Romer
2026-04-29 18:13:42 +00:00
committed by GitHub
parent 0124aae041
commit 4c9049346d
97 changed files with 1181 additions and 834 deletions
+3 -1
View File
@@ -2369,7 +2369,9 @@ static auto TryEvalTypedInst(EvalContext& eval_context, SemIR::InstId inst_id,
if constexpr (ConstantKind == SemIR::InstConstantKind::Always ||
ConstantKind == SemIR::InstConstantKind::WheneverPossible) {
return MakeConstantResult(eval_context.context(), inst, phase);
} else if constexpr (ConstantKind == SemIR::InstConstantKind::InstAction) {
} else if constexpr (ConstantKind ==
SemIR::InstConstantKind::ConstantInstAction ||
ConstantKind == SemIR::InstConstantKind::InstAction) {
auto result_inst_id = PerformDelayedAction(
eval_context.context(), SemIR::LocId(inst_id), inst.As<InstT>());
if (result_inst_id.has_value()) {