nyash-codex
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
..
2025-11-20 08:41:37 +09:00
2025-09-17 07:43:07 +09:00
2025-09-17 07:43:07 +09:00
2025-09-04 11:34:15 +09:00
2025-09-28 12:19:49 +09:00
2025-09-17 07:43:07 +09:00
2025-09-17 07:43:07 +09:00
2025-11-21 06:25:17 +09:00
2025-09-17 07:43:07 +09:00
2025-09-17 07:43:07 +09:00
2025-09-19 02:07:38 +09:00
2025-09-22 21:52:39 +09:00
2025-11-17 11:28:18 +09:00
2025-11-26 11:38:45 +09:00
2025-11-26 10:17:37 +09:00
2025-11-25 06:54:35 +09:00
2025-11-24 14:17:02 +09:00
2025-11-25 13:33:01 +09:00
2025-11-25 12:22:08 +09:00
2025-11-24 14:17:02 +09:00
2025-11-17 11:28:18 +09:00
2025-09-19 02:07:38 +09:00
2025-09-19 02:07:38 +09:00
2025-09-19 02:07:38 +09:00
2025-09-19 22:27:59 +09:00
2025-09-19 22:27:59 +09:00
2025-11-21 06:25:17 +09:00
2025-09-15 22:14:42 +09:00
2025-09-07 07:28:53 +09:00
2025-09-15 22:14:42 +09:00
2025-11-24 14:17:02 +09:00
2025-11-22 11:03:21 +09:00
2025-11-21 06:25:17 +09:00
2025-11-23 05:53:27 +09:00
2025-11-24 14:17:02 +09:00
2025-11-24 14:17:02 +09:00
2025-11-24 14:17:02 +09:00
2025-11-27 08:18:09 +09:00
2025-11-24 14:17:02 +09:00
2025-11-24 14:17:02 +09:00
2025-11-24 14:17:02 +09:00
2025-11-24 14:17:02 +09:00
2025-11-24 14:17:02 +09:00
2025-09-04 03:41:02 +09:00
2025-11-21 06:25:17 +09:00
2025-11-24 14:17:02 +09:00
2025-11-21 06:21:45 +09:00
2025-11-21 06:21:45 +09:00
2025-09-19 02:07:38 +09:00
2025-09-23 09:00:07 +09:00
2025-11-18 06:39:45 +09:00
2025-09-07 07:36:15 +09:00
2025-09-07 07:36:15 +09:00
2025-11-19 23:12:01 +09:00
2025-09-07 07:36:15 +09:00
2025-09-14 00:44:28 +09:00
2025-09-14 00:44:28 +09:00
2025-09-07 07:36:15 +09:00
2025-09-07 07:36:15 +09:00
2025-09-03 20:03:45 +09:00
2025-11-24 14:17:02 +09:00
2025-11-22 05:33:40 +09:00
2025-11-24 14:17:02 +09:00
2025-11-24 14:17:02 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 06:25:17 +09:00
2025-11-21 12:38:37 +09:00
2025-11-24 14:17:02 +09:00
2025-11-21 06:25:17 +09:00
2025-11-27 03:28:32 +09:00
2025-11-24 14:17:02 +09:00
2025-11-17 11:28:18 +09:00
2025-09-08 04:04:19 +09:00
2025-09-19 02:07:38 +09:00
2025-09-19 02:07:38 +09:00
2025-09-21 08:53:00 +09:00
2025-09-03 20:03:45 +09:00
2025-09-03 20:03:45 +09:00
2025-09-19 02:07:38 +09:00
2025-09-03 20:03:45 +09:00
2025-09-23 09:00:07 +09:00
2025-11-01 13:28:56 +09:00
2025-11-21 06:25:17 +09:00
2025-11-17 11:28:18 +09:00
2025-11-17 11:28:18 +09:00
2025-09-28 12:19:49 +09:00
2025-11-22 05:33:40 +09:00
2025-09-17 07:43:07 +09:00
2025-09-23 09:00:07 +09:00
2025-09-17 07:43:07 +09:00
2025-09-17 07:43:07 +09:00
2025-09-17 07:43:07 +09:00
2025-09-23 09:00:07 +09:00
2025-11-05 18:57:03 +09:00
2025-11-21 06:25:17 +09:00
2025-09-28 12:19:49 +09:00
2025-11-17 11:28:18 +09:00
2025-11-17 11:28:18 +09:00
2025-11-17 11:28:18 +09:00
2025-11-17 11:28:18 +09:00
2025-11-17 11:28:18 +09:00
2025-11-17 11:28:18 +09:00
2025-11-17 11:28:18 +09:00