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-09-17 10:58:12 +09:00
2025-12-08 16:34:04 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-08-26 01:42:18 +09:00
2025-09-05 13:29:17 +09:00
2025-12-04 14:19:48 +09:00
2025-12-04 14:19:48 +09:00