docs: Add NYASH_TRACE_VARMAP debug guide to MIR debugging section
This commit is contained in:
27
CLAUDE.md
27
CLAUDE.md
@ -36,6 +36,13 @@ NYASH_OPTION_C_DEBUG=1 cargo test --release TEST_NAME 2>&1 | grep "Option C"
|
|||||||
# LoopForm デバッグ
|
# LoopForm デバッグ
|
||||||
NYASH_LOOPFORM_DEBUG=1 cargo test --release TEST_NAME 2>&1 | grep "loopform"
|
NYASH_LOOPFORM_DEBUG=1 cargo test --release TEST_NAME 2>&1 | grep "loopform"
|
||||||
|
|
||||||
|
# variable_map トレース (JoinIR PHI接続デバッグ) ⭐超重要
|
||||||
|
NYASH_TRACE_VARMAP=1 cargo test --release TEST_NAME 2>&1 | grep "varmap"
|
||||||
|
# 出力例:
|
||||||
|
# [trace:varmap] pattern3_before_merge: sum→r123, count→r124
|
||||||
|
# [trace:varmap] pattern3_after_merge: (merge完了後)
|
||||||
|
# [trace:varmap] pattern3_exit_phi_connected: sum→r456(final)
|
||||||
|
|
||||||
# 完全MIRダンプ(テスト時)
|
# 完全MIRダンプ(テスト時)
|
||||||
NYASH_MIR_TEST_DUMP=1 cargo test --release TEST_NAME 2>&1 > /tmp/mir_dump.log
|
NYASH_MIR_TEST_DUMP=1 cargo test --release TEST_NAME 2>&1 > /tmp/mir_dump.log
|
||||||
|
|
||||||
@ -49,6 +56,26 @@ for i in 1 2 3; do
|
|||||||
done
|
done
|
||||||
```
|
```
|
||||||
|
|
||||||
|
##### 🎯 **NYASH_TRACE_VARMAP の威力**
|
||||||
|
|
||||||
|
**何ができる?**
|
||||||
|
- JoinIR → MIR merge 時の variable_map 変化を可視化
|
||||||
|
- Pattern 3 のような複雑な PHI 接続を段階的に追跡
|
||||||
|
- Exit PHI が正しく variable_map に接続されたか確認
|
||||||
|
- バグ発見時間: **1.5時間 → 30秒** に短縮!
|
||||||
|
|
||||||
|
**戦略的なトレース点**:
|
||||||
|
- `pattern3_before_merge`: Merge 実行前の ValueId マッピング
|
||||||
|
- `pattern3_after_merge`: Merge 直後の状態
|
||||||
|
- `pattern3_exit_phi_connected`: Exit PHI が variable に接続された最終状態
|
||||||
|
|
||||||
|
**使用例**:
|
||||||
|
```bash
|
||||||
|
# Pattern 3 バグの高速診断
|
||||||
|
NYASH_TRACE_VARMAP=1 cargo test --release test_loop_with_if_phi_sum -- --nocapture 2>&1 | tail -20
|
||||||
|
# → sum の ValueId 変化が一目瞭然!
|
||||||
|
```
|
||||||
|
|
||||||
#### 📊 **重要な発見:HashMap非決定性**
|
#### 📊 **重要な発見:HashMap非決定性**
|
||||||
- Rustの`HashMap`/`HashSet`はHashDoS対策でランダムseed使用
|
- Rustの`HashMap`/`HashSet`はHashDoS対策でランダムseed使用
|
||||||
- PHI生成順序が毎回変わる → ValueId割り当てが変動
|
- PHI生成順序が毎回変わる → ValueId割り当てが変動
|
||||||
|
|||||||
Reference in New Issue
Block a user