nyash-codex
f74b7d2b04
📦 Hotfix 1 & 2: Parameter ValueId Reservation + Exit PHI Validation (Box-First Theory)
**箱理論に基づく根治的修正**:
## 🎯 Hotfix 1: Parameter ValueId Reservation (パラメータ ValueId 予約)
### 根本原因
- MirFunction counter が params.len() を考慮していなかった
- local variables が parameter ValueIds を上書き
### 箱理論的解決
1. **LoopFormContext Box**
- パラメータ予約を明示的に管理
- 境界をはっきりさせる
2. **MirFunction::new() 改善**
- `initial_counter = param_count.max(1)` でパラメータ予約
- Parameters are %0, %1, ..., %N-1
3. **ensure_counter_after() 強化**
- パラメータ数 + 既存 ValueIds 両方を考慮
- `min_counter = param_count.max(max_id + 1)`
4. **reserve_parameter_value_ids() 追加**
- 明示的な予約メソッド(Box-First)
## 🎯 Hotfix 2: Exit PHI Predecessor Validation (Exit PHI 検証)
### 根本原因
- LoopForm builder が存在しないブロックを PHI predecessor に追加
- 「幽霊ブロック」問題
### 箱理論的解決
1. **LoopFormOps.block_exists() 追加**
- CFG 存在確認メソッド
- 境界を明確化
2. **build_exit_phis() 検証**
- 非存在ブロックをスキップ
- デバッグログ付き
### 実装ファイル
- `src/mir/function.rs`: Parameter reservation
- `src/mir/phi_core/loopform_builder.rs`: Context + validation
- `src/mir/loop_builder.rs`: LoopFormOps impl
- `src/mir/builder/stmts.rs`: Local variable allocation
### 業界標準準拠
- ✅ LLVM IR: Parameters are %0, %1, ...
- ✅ SSA Form: PHI predecessors must exist in CFG
- ✅ Cytron et al. (1991): Parameter reservation principle
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude <noreply@anthropic.com>
2025-11-18 06:39:45 +09:00
..
2025-09-26 00:42:55 +09:00
2025-09-06 06:24:08 +09:00
2025-10-31 19:22:00 +09:00
2025-08-28 12:09:09 +09:00
2025-11-09 00:57:10 +09:00
2025-11-13 16:40:58 +09:00
2025-09-19 02:07:38 +09:00
2025-11-08 23:58:42 +09:00
2025-11-08 23:45:29 +09:00
2025-10-31 19:22:00 +09:00
2025-11-11 02:07:12 +09:00
2025-09-07 07:28:53 +09:00
2025-11-15 01:11:21 +09:00
2025-11-01 12:19:17 +09:00
2025-11-02 15:43:43 +09:00
2025-11-06 15:41:52 +09:00
2025-11-17 00:48:18 +09:00
2025-11-18 06:11:17 +09:00
2025-11-06 15:41:52 +09:00
2025-09-06 06:24:08 +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-09-14 00:44:28 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-08-29 23:11:21 +09:00
2025-11-06 15:41:52 +09:00
2025-11-09 15:11:18 +09:00
2025-11-07 19:32:44 +09:00
2025-09-01 23:44:34 +09:00
2025-11-06 15:41:52 +09:00
2025-09-14 04:51:33 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-09-16 23:49:36 +09:00
2025-09-06 06:24:08 +09:00
2025-09-05 05:16:21 +09:00
2025-09-05 05:16:21 +09:00
2025-11-01 18:53:15 +09:00
2025-11-06 15:41:52 +09:00
2025-08-26 01:42:18 +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-11-06 15:41:52 +09:00
2025-11-15 05:42:32 +09:00
2025-11-06 15:41:52 +09:00
2025-11-01 13:28:56 +09:00
2025-11-01 13:28:56 +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-11-08 15:49:25 +09:00
2025-11-17 00:48:18 +09:00
2025-11-06 15:41:52 +09:00
2025-09-14 04:51:33 +09:00
2025-11-11 21:24:51 +09:00
2025-09-04 11:34:15 +09:00
2025-11-06 15:41:52 +09:00
2025-09-04 11:34:15 +09:00
2025-09-07 07:36:15 +09:00
2025-11-09 23:40:36 +09:00
2025-09-15 01:21:37 +09:00
2025-11-13 16:40:58 +09:00
2025-09-05 13:29:17 +09:00
2025-09-05 13:29:17 +09:00
2025-09-14 19:16:32 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-11-01 18:53:15 +09:00
2025-09-15 01:21:37 +09:00
2025-09-05 13:29:17 +09:00
2025-09-07 07:36:15 +09:00
2025-11-17 00:48:18 +09:00
2025-11-06 15:41:52 +09:00
2025-09-15 18:44:49 +09:00
2025-09-15 18:44:49 +09:00
2025-09-15 18:44:49 +09:00
2025-09-15 18:44:49 +09:00
2025-09-17 01:20:15 +09:00
2025-09-05 05:16:21 +09:00
2025-09-27 08:45:25 +09:00
2025-09-27 08:45:25 +09:00
2025-09-04 11:34:15 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-09-19 02:07:38 +09:00
2025-09-19 02:07:38 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-09-18 13:35:38 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-09-15 22:14:42 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-09-21 08:53:00 +09:00
2025-09-15 18:44:49 +09:00
2025-09-15 18:44:49 +09:00
2025-09-15 18:44:49 +09:00
2025-09-15 18:44:49 +09:00
2025-11-06 15:41:52 +09:00
2025-09-15 18:44:49 +09:00
2025-11-06 15:41:52 +09:00
2025-08-23 16:33:32 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-11-15 22:32:13 +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-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-11-01 18:53:15 +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-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-11-08 17:04:21 +09:00
2025-11-06 15:41:52 +09:00
2025-11-08 17:04:21 +09:00
2025-11-18 06:39:45 +09:00
2025-11-13 18:11:25 +09:00
2025-11-09 15:11:18 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-09-16 14:57:05 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-09-07 07:36:15 +09:00
2025-09-17 20:33:19 +09:00
2025-11-06 15:41:52 +09:00
2025-11-06 15:41:52 +09:00
2025-08-24 00:05:12 +09:00