master — suite 111/111, tree clean except the user's uncommitted
compiler/toto.mod edit.
Short-circuit AND/OR (task 1). Tag v3-short-circuit; details in
docs/summary_short-circuit.md.
… AND (tform[t] = FAlias)).QbeGen.DelayBegin
buffers it, DelayEnd restores output, DelayFlush replays it inside
the branch; a 4-byte memory slot (Slot4/StoreW/LoadW) merges
the branch results (robust when the RHS spans blocks; a phi was not).SimExpr (OR) / Term (AND): if a { r=1/0 } else { <RHS>; r=b }.wip/short-circuit branch (14 failing tests) was debugged — two
bugs: DelayFlush popped the wrong index, and the CopyOp-only merge
collapsed the branches to one operand — then merged and the branch
deleted.The self-compiled V3 (/tmp/M2self) compiles a single file to a
byte-identical .ssa, but the whole compiler source set still
aborts (rc 134), now in the scanner's GetName
(LexName ← GetIdent ← ProcTypeSection) — a bounds trap in the
token-text copy loop (0 ≤ i ≤ count on the destination buffer).
Likely the caller's buffer descriptor header is wrong; needs more
diagnosis. (Earlier self-image aborts fixed: Resolve's eager-AND
tform[t] guard → resolved by short-circuit.)
GetName bounds trap; iterate until /tmp/M2self
compiles the whole set to a byte-identical M2.ssa (full fixpoint).FileIO selection and bootstrap/fixpoint.sh
(Stage1 gm2 → Stage2 V3 → Stage3 V3), with the stage-aware CR flag
(-m for gm2, no -m for V3).v3-short-circuit (merge + summary).