fix(joinir): Phase 82-5 lifecycle.rs return type inference bug fix

**Problem**: lifecycle.rs walked bb.instructions before checking bb.terminator,
causing it to infer types from intermediate values like `%1 = const void` instead
of the actual return value.

**Solution**: Remove instructions walking entirely, only check terminator Returns.
This ensures we infer type from the actual return value (e.g., `ret %3`).

**Impact**:
- Case D failures: 51 → 20 (60% reduction! 31 eliminated)
- Removed ~55 lines of redundant instructions walking
- All remaining 20 Case D are genuine GenericTypeResolver coverage issues

**Files Modified**:
- src/mir/builder/lifecycle.rs: Remove instructions loop, only check terminator

**Test Results**:
- Baseline: 483 passed, 33 failed
- With NYASH_PHI_FALLBACK_DISABLED=1: 463 passed, 53 failed (20 Case D panics)
- All remaining Case D are in `main` functions (genuine, not bugs)

**Related**: Phase 82-if-phi-retire Step 5 (ChatGPT root cause analysis)
This commit is contained in:
nyash-codex
2025-12-02 16:00:50 +09:00
parent b9496000f9
commit be38e4c272
2 changed files with 6 additions and 58 deletions