|
|
@@ -127,8 +127,14 @@ Still to do:
|
|
|
`Op3`/`NewTemp` there would break constants and constant-bound
|
|
|
checks. Deleting them requires first teaching `Lower` to fold
|
|
|
constants itself from the AST (a real change, not cleanup), then
|
|
|
- dropping the grammar's value layer. Designators are entangled the
|
|
|
- same way (`qn`/`NoteAddr` feed VAR-actual addresses).
|
|
|
+ dropping the grammar's value layer.
|
|
|
+ **Designators are fused the same way, confirmed 2026-10-08:**
|
|
|
+ `Fact` calls `Design<…, qd, …>` then records `NoteAddr(q, qd)` /
|
|
|
+ `AddrOf(qn, qa)`, and `ActParam` recovers the VAR-actual address with
|
|
|
+ `AddrOfVal(qe, qa)`; `q`/`qd` also feed `IsImm`/`ConstInt` for CASE
|
|
|
+ labels, bounds and BY. So dropping `LoadVar`/`ElemLoad`/`FieldAddr`/
|
|
|
+ `AddrOf` from `Design` breaks the grammar's own value/note chain, not
|
|
|
+ just output.
|
|
|
5. **Calls, proc headings, imports, classes: BLOCKED too, by fused
|
|
|
validation.** The `QbeGen` emit functions double as semantic
|
|
|
checks and the grammar depends on their result: `QbeGen.CallArg`
|