|
|
5b7818f5c9
|
feat(joinir): Phase 33-7 IfMerge lowering for multiple-variable PHI
Implements IfMerge instruction lowering to support multiple variables
merging from if/else branches (Phase 33-7: return pattern only).
## Changes
- Add src/mir/join_ir/lowering/if_merge.rs (232 lines)
- IfMergeLowerer with pattern matching for common variables
- extract_written_vars() / find_written_value() helpers
- Phase 33-7 constraint: return pattern only (k_next=None)
- Update src/mir/join_ir/lowering/mod.rs
- Unified entry point: try_lower_if_to_joinir()
- Priority: IfMerge → Select → if_phi fallback
- Add IfMergeTest.* to whitelist
- Add unit tests in src/tests/mir_joinir_if_select.rs
- test_if_merge_simple_pattern (2 variables)
- test_if_merge_multiple_pattern (3 variables)
- All 7/7 tests PASS ✅
- Add reference test cases
- apps/tests/joinir_if_merge_simple.hako (2-var pattern)
- apps/tests/joinir_if_merge_multiple.hako (3-var pattern)
## Test Results
✅ Simple pattern (2 vars): merges=2, k_next=None
✅ Multiple pattern (3 vars): merges=3, k_next=None
✅ test result: ok. 7 passed; 0 failed
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
|
2025-11-27 08:18:09 +09:00 |
|