tomoaki
661bbe1ab7
feat(phase284): P1 Complete - Return in Loop with Block Remap Fix
## Summary
Completed Phase 284 P1: Enable return statements in Pattern4/5 loops via
JoinInst::Ret infrastructure (100% pre-existing, no new infrastructure needed).
**Critical Bug Fix**: Block ID remap priority
- Fixed: local_block_map must take precedence over skipped_entry_redirects
- Root cause: Function-local block IDs can collide with global remap entries
(example: loop_step:bb4 vs k_exit:bb4 after merge allocation)
- Impact: Conditional Jump else branches were incorrectly redirected to exit
- Solution: Check local_block_map FIRST, then skipped_entry_redirects
## Implementation
### New Files
- `src/mir/join_ir/lowering/return_collector.rs` - Return detection SSOT (top-level only, P1 scope)
- `apps/tests/phase284_p1_return_in_loop_min.hako` - Test fixture (exit code 7)
- Smoke test scripts (VM/LLVM)
### Modified Files
- `loop_with_continue_minimal.rs`: Return condition check + Jump generation
- `pattern4_with_continue.rs`: K_RETURN registration in continuation_funcs
- `canonical_names.rs`: K_RETURN constant
- `instruction_rewriter.rs`: Fixed Branch remap priority (P1 fix)
- `terminator.rs`: Fixed Jump/Branch remap priority (P1 fix)
- `conversion_pipeline.rs`: Return normalization support
## Testing
✅ VM: exit=7 PASS
✅ LLVM: exit=7 PASS
✅ Baseline: 46 PASS, 1 FAIL (pre-existing emit issue)
✅ Zero regression
## Design Notes
- JoinInst::Ret infrastructure was 100% complete before P1
- Bridge automatically converts JoinInst::Ret → MIR Return terminator
- Pattern4/5 now properly merge k_return as non-skippable continuation
- Correct semantics: true condition → return, false → continue loop
## Next Phase (P2+)
- Refactor: Block remap SSOT (block_remapper.rs)
- Refactor: Return jump emitter extraction
- Scope: Nested if/loop returns, multiple returns
- Design: Standardize early exit pattern (return/break/continue as Jump with cond)
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
2025-12-23 14:21:27 +09:00
..
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-12-13 22:51:13 +09:00
2025-12-16 21:37:07 +09:00
2025-12-17 00:59:33 +09:00
2025-12-17 01:01:07 +09:00
2025-12-17 04:25:57 +09:00
2025-12-17 21:24:59 +09:00
2025-12-17 21:24:59 +09:00
2025-12-17 21:24:59 +09:00
2025-12-17 04:26:05 +09:00
2025-12-17 21:24:59 +09:00
2025-12-17 06:10:59 +09:00
2025-12-17 05:43:44 +09:00
2025-12-17 21:24:59 +09:00
2025-12-17 16:33:26 +09:00
2025-12-17 21:24:59 +09:00
2025-12-17 16:57:11 +09:00
2025-12-17 21:24:59 +09:00
2025-12-18 02:32:32 +09:00
2025-12-17 21:24:59 +09:00
2025-12-18 02:32:32 +09:00
2025-12-17 21:25:12 +09:00
2025-12-17 21:25:12 +09:00
2025-12-17 21:24:59 +09:00
2025-12-17 18:29:27 +09:00
2025-12-17 22:47:42 +09:00
2025-12-17 22:47:42 +09:00
2025-12-17 23:16:53 +09:00
2025-12-17 23:16:53 +09:00
2025-12-18 01:58:38 +09:00
2025-12-18 02:32:32 +09:00
2025-12-18 02:18:57 +09:00
2025-12-18 02:32:32 +09:00
2025-12-18 02:32:08 +09:00
2025-12-18 02:32:08 +09:00
2025-12-18 02:39:33 +09:00
2025-12-18 02:39:33 +09:00
2025-12-18 02:55:02 +09:00
2025-12-18 02:55:02 +09:00
2025-12-18 03:43:10 +09:00
2025-12-18 03:43:10 +09:00
2025-12-18 03:43:10 +09:00
2025-12-18 03:43:10 +09:00
2025-12-18 04:39:23 +09:00
2025-12-18 04:39:23 +09:00
2025-12-18 04:53:04 +09:00
2025-12-18 05:50:16 +09:00
2025-12-18 06:09:36 +09:00
2025-12-18 06:32:10 +09:00
2025-12-18 07:15:23 +09:00
2025-12-18 07:07:04 +09:00
2025-12-18 07:18:00 +09:00
2025-12-18 07:53:27 +09:00
2025-12-18 09:13:13 +09:00
2025-12-18 09:13:13 +09:00
2025-12-18 18:28:50 +09:00
2025-12-18 18:28:50 +09:00
2025-12-15 12:12:54 +09:00
2025-12-18 21:51:33 +09:00
2025-12-18 21:51:33 +09:00
2025-12-15 16:57:28 +09:00
2025-12-18 22:11:08 +09:00
2025-12-18 22:11:08 +09:00
2025-12-15 17:49:08 +09:00
2025-12-15 17:00:51 +09:00
2025-12-18 22:46:32 +09:00
2025-12-18 22:46:32 +09:00
2025-12-15 19:25:33 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 00:15:32 +09:00
2025-12-19 05:28:49 +09:00
2025-12-19 05:28:49 +09:00
2025-12-19 05:28:49 +09:00
2025-12-19 05:28:49 +09:00
2025-12-19 05:42:11 +09:00
2025-12-19 04:41:01 +09:00
2025-12-19 08:36:45 +09:00
2025-12-19 08:36:45 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 16:19:49 +09:00
2025-12-19 17:03:56 +09:00
2025-12-19 17:03:56 +09:00
2025-12-19 17:03:56 +09:00
2025-12-19 17:03:56 +09:00
2025-12-19 20:30:58 +09:00
2025-12-19 20:30:58 +09:00
2025-12-19 23:32:25 +09:00
2025-12-22 14:48:37 +09:00
2025-12-20 01:24:04 +09:00
2025-12-20 13:04:24 +09:00
2025-12-20 23:30:27 +09:00
2025-12-20 23:30:27 +09:00
2025-12-22 22:42:56 +09:00
2025-12-21 00:29:50 +09:00
2025-12-21 03:21:22 +09:00
2025-12-21 03:21:22 +09:00
2025-12-21 10:39:48 +09:00
2025-12-21 11:49:03 +09:00
2025-12-22 01:41:19 +09:00
2025-12-22 03:33:30 +09:00
2025-12-21 23:12:52 +09:00
2025-12-22 14:48:37 +09:00
2025-12-22 14:48:37 +09:00
2025-12-22 14:48:37 +09:00
2025-12-22 14:48:37 +09:00
2025-12-22 14:48:37 +09:00
2025-12-22 14:48:37 +09:00
2025-12-22 14:48:37 +09:00
2025-12-22 14:48:37 +09:00
2025-12-23 08:34:19 +09:00
2025-12-23 08:34:19 +09:00
2025-12-23 14:21:27 +09:00
2025-12-23 14:21:27 +09:00