eae73bf320440f6b031715e72c1f20b0ac86e024
Terminal iteration of the standalone loop/recur milestone. Replaces the iter-1 lower_term CodegenError::Internal stub with real LLVM-IR lowering: loop binders as entry-block allocas (the mut.3 pending_entry_allocas mechanism, reusing mut_var_allocas so the existing Term::Var load path needs zero new code), a fresh loop-header block reached by an unconditional br, recur stores + back-edge br, a new loop_frames codegen stack saved/restored at the lambda boundary (mut.3 triple precedent). Four Boss design calls baked into the plan header, all on architectural-consistency / spec-pinned-invariant grounds (not effort): (1) alloca + clang -O2 mem2reg, NOT hand-emitted phi (no linear-emit phi precedent; spec's "phi" is the secondary impl-shape; mem2reg gives identical optimized output); (2) reuse mut_var_allocas + the existing Term::Var load path (Var-lowering byte-unchanged; representation- sharing only); (3) loop-exit value is the emergent product of the existing if/match join once recur sets block_terminated, no separate result phi; (4) reuse the single block_terminated field, recur sets it at its own emit site (parallel setter), zero edits to existing SET/READ sites (tail-app byte-unchanged). Three new .ail fixtures: sum_to->55 run, deep-n 1e6->500000500000 (clause-2 correctness made executable), infinite-loop build-only. iter-3 is codegen-only: no schema/typecheck change, hash pins + drift trio stay green untouched. Self-review item 7 (the systemic fix folded into iter-2) applied: T1's field-add is not a fn-signature change, no deferred-caller-past-gate.
Description
No description provided
Languages
Rust
91.6%
Python
4.6%
C
1.8%
LLVM
1.6%
Shell
0.4%