feat(phase21.5): Loop FORCE direct assembly + PHI/compare fixes
## Loop FORCE Direct Assembly ✅ - Added: Direct MIR assembly bypass when HAKO_MIR_BUILDER_LOOP_FORCE_JSONFRAG=1 - Implementation: Extracts limit from Program(JSON), generates minimal while-form - Structure: entry(0) → loop(1) → body(2) → exit(3) - PHI: i = {i0, entry} | {i_next, body} - Location: tools/hakorune_emit_mir.sh:70-126 - Tag: [selfhost-direct:ok] Direct MIR assembly (FORCE=1) ## PHI/Compare Fixes (ny-llvmc) ✅ - Fixed: vmap maintenance for PHI results across instructions - Fixed: PHI placeholder name consistency (bytes vs str) - Fixed: ensure_phi_alloca creates unique placeholders per block - Fixed: resolve_i64_strict properly looks up PHI results - Files: - src/llvm_py/phi_wiring/tagging.py - src/llvm_py/phi_wiring/wiring.py - src/llvm_py/instructions/compare.py - src/llvm_py/resolver.py ## Testing Results - VM backend: ✅ rc=10 (correct) - Direct assembly MIR: ✅ Structurally correct - Crate backend: ⚠️ PHI/compare issues (being investigated) ## Implementation Principles - 既定挙動不変 (FORCE=1 gated) - Dev toggle controlled - Minimal diff, surgical changes - Bypasses using resolution when FORCE=1 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@ -1,6 +1,7 @@
|
||||
#!/usr/bin/env bash
|
||||
# ny_mir_builder.sh — Minimal MIR Builder CLI (shell wrapper)
|
||||
# Purpose: consume Nyash JSON IR and emit {obj|exe|ll|json} using the existing nyash LLVM harness.
|
||||
# Purpose: consume Nyash JSON IR and emit {obj|exe|ll|json} via the ny-llvmc crate backend by default.
|
||||
# Notes: llvmlite harness remains internal; choose it explicitly with NYASH_LLVM_BACKEND=llvmlite when debugging.
|
||||
|
||||
set -euo pipefail
|
||||
[[ "${NYASH_CLI_VERBOSE:-0}" == "1" ]] && set -x
|
||||
|
||||
Reference in New Issue
Block a user