docs: Phase 196 Implementation Results documentation

Updated documentation with Phase 196 completion details:

1. phase196-select-bug-fix.md:
   - Added "Implementation Results" section with fix details
   - Before/After code examples
   - Complete test results (all patterns PASS)
   - Reference to phase196-select-bug-analysis.md

2. joinir-architecture-overview.md:
   - Added Select expansion invariant to InstructionRewriter section
   - "PHI inputs must use remapper.remap_instruction() remapped ValueIds"
   - "InstructionRewriter only remaps block IDs, not ValueIds"

3. CURRENT_TASK.md:
   - Marked Phase 196 as complete with summary
   - Added Phase 197 as next candidate (JsonParser deployment)

All Phase 196 documentation now complete.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
This commit is contained in:
nyash-codex
2025-12-09 14:56:05 +09:00
parent 996925ebaf
commit 5a19290db8
2 changed files with 62 additions and 0 deletions

View File

@ -276,6 +276,10 @@ JoinIR ラインで守るべきルールを先に書いておくよ:
- continuation 関数k_exitをスキップし、Return → exit ブロック Jump に変換。
- `JoinFragmentMeta.expr_result` と exit_bindings をヘッダ PHI 経由で収集し、`exit_phi_inputs` / `carrier_inputs` を復活させたSSAundef 修正済み)。
- tail call を Branch/Jump に書き換えつつ、LoopHeaderPhiInfo に latch 入力を記録する。
- **Select 展開の不変条件Phase 196**:
- PHI の入力 ValueId は必ず `remapper.remap_instruction()` で remap 済みの MIR ValueId を使用。
- InstructionRewriter では ValueId の二重 remap を行わないblock ID のみ remap
- 詳細: [phase196-select-bug-analysis.md](./phase196-select-bug-analysis.md)
---