nyash-codex
7a01ffe522
fix(joinir): Phase 177-3 ValueId collision fix for multi-carrier loops
Root cause: JoinIR ValueId collision between function parameters and condition bindings
- Same ValueId used for both `result_init` (carrier param) and `limit` (condition var)
- Phase 33-21 was overwriting condition bindings when remapping carrier PHIs
Fix implemented (Option B - immediate protection):
1. Phase 177-3: Protect condition-only variables from Phase 33-21 override
- Collect condition_bindings that are NOT carriers (by checking exit_bindings)
- Skip remapping for these protected ValueIds
2. Phase 177-3-B: Handle body-only carriers explicitly
- Carriers that appear in condition_bindings (added by Phase 176-5)
- Map them to correct PHI dsts by name lookup
Investigation tools added:
- [DEBUG-177] trace logs for remapper state tracking
- Phase 177-3 protection logging
- BoundaryInjector PHI collision detection
Test results:
- ✅ Integer multi-carrier test: Output 3 (expected)
- ⚠️ String test: RC=0 but empty output (separate issue - string concat emit)
Design docs created:
- phase177-parse-string-design.md: _parse_string loop analysis
- phase177-carrier-evolution.md: Carrier progression Phase 174-179
Next: Investigate string concatenation emit for full _parse_string support
2025-12-08 16:34:04 +09:00
..
2025-12-08 15:17:53 +09:00
2025-12-08 16:34:04 +09:00
2025-12-07 05:07:28 +09:00
2025-12-08 16:34:04 +09:00
2025-12-07 12:28:11 +09:00
2025-12-07 12:28:11 +09:00
2025-12-07 12:23:37 +09:00
2025-12-08 16:34:04 +09:00
2025-12-07 12:23:37 +09:00
2025-12-07 12:01:54 +09:00