# Phase‑20.31 — Optimizations: LLVM Opt + MIR Prepass + UserBox Birth 目的 - ハコルネの実行性能を一段引き上げる。特に「ユーザーボックス生成」の遅さを改善し、代表ケースで C の約 80% を狙う。 スコープ(本フェーズ) - LLVM 最適化レベルの切替を CLI/ENV から統一管理(llvmlite と native の両経路)。 - ENV: `HAKO_LLVM_OPT_LEVEL`(alias: `NYASH_LLVM_OPT_LEVEL`)で 0〜3 を指定可能。llvmlite ハーネス / Python ビルダー双方で尊重する。 - MIR プリ最適化(安全セット)を導入し、IR 形状を最適化に適した形へ整える。 - ユーザーボックス生成(birth)の高速化: 形状キャッシュ+連続領域確保のファストパスを追加(実装計画)。 非スコープ(次フェーズ) - ネイティブ AOT ライブラリの内部 LLVM パス実装(`libhako_llvm` の本実装)。 - 高度なループ最適化(SLP/Vectorize など)は設計のみ(既定 OFF)。 性能目標(代表ケース) - C の 80% を目安(±5% の揺れを許容)。 - ベンチ対象(代表): - 算術ループ(i64)+ 条件分岐(if/phi) - ユーザーボックスを N 回生成(小さな固定フィールド数: 2〜4)→ 数値フィールドに書き込み → 破棄 - 配列 push/pop を挟む軽いメモリアクセス 測定方針 - AOT(llvmlite)で EXE を生成し、同等の C 実装と実行時間を比較(3 回以上、最小値採用)。 - 既定は O2、`HAKO_LLVM_OPT_LEVEL=3` でも回帰しないこと(負例も併設)。 合格基準(MVP) - 代表ベンチで C の ≥ 80% を達成。 - quick/integration が緑のまま(既定挙動は不変)。 - ユーザーボックス生成の 2 桁% 改善(ベース比)。