phase-20.45: PRIMARY no-fallback reps + MIR v0 shape fixes
- Fix MIR v0 shape in lowers: functions[] + name="main" + blocks.id * lower_return_int_box.hako * lower_return_binop_box.hako - runner_min: adopt LowerReturnBinOpBox before ReturnInt - Add PRIMARY no-fallback canaries (all PASS): * return-binop / array-size / load-store / return-logical (OR) - Fix phase2043 runner_min canary alias (Runner -> BuilderRunnerMinBox) - Update docs: phase-20.45 README (PRIMARY reps), CURRENT_TASK progress Ancillary: keep builder/provider/canary files in sync; no unrelated behavior changes.
This commit is contained in:
@ -10,8 +10,12 @@ static box LoopScanBox {
|
||||
local varname = null
|
||||
local kl = ("" + s).indexOf("\"lhs\":{", k_cmp)
|
||||
local kr = ("" + s).indexOf("\"rhs\":{", k_cmp)
|
||||
if kl >= 0 && ("" + s).indexOf("\"type\":\"Var\"", kl) >= 0 { varname = Scan.read_quoted_after_key(s, kl, "name") }
|
||||
if varname == null && kr >= 0 && ("" + s).indexOf("\"type\":\"Var\"", kr) >= 0 { varname = Scan.read_quoted_after_key(s, kr, "name") }
|
||||
if kl >= 0 && ("" + s).indexOf("\"type\":\"Var\"", kl) >= 0 {
|
||||
local kn = ("" + s).indexOf("\"name\":\"", kl); if kn >= 0 { varname = JsonFragBox.read_string_after(s, kn) }
|
||||
}
|
||||
if varname == null && kr >= 0 && ("" + s).indexOf("\"type\":\"Var\"", kr) >= 0 {
|
||||
local kn2 = ("" + s).indexOf("\"name\":\"", kr); if kn2 >= 0 { varname = JsonFragBox.read_string_after(s, kn2) }
|
||||
}
|
||||
return varname
|
||||
}
|
||||
|
||||
@ -26,7 +30,8 @@ static box LoopScanBox {
|
||||
if kif < 0 { return null }
|
||||
local kcmp = ("" + s).lastIndexOf("\"type\":\"Compare\"", ks)
|
||||
if kcmp < 0 || kcmp < kif { return null }
|
||||
local op = Scan.read_quoted_after_key(s, kcmp, "op"); if op == null || op != "!=" { return null }
|
||||
local kop = ("" + s).indexOf("\"op\":", kcmp); if kop < 0 { return null }
|
||||
local op = JsonFragBox.read_string_after(s, kop + 5); if op == null || op != "!=" { return null }
|
||||
// else 範囲の配列区間を特定
|
||||
local kth = JsonFragBox.index_of_from(s, "\"then\":", kif); if kth < 0 { return null }
|
||||
local lb_then = JsonFragBox.index_of_from(s, "[", kth); if lb_then < 0 { return null }
|
||||
@ -43,7 +48,8 @@ static box LoopScanBox {
|
||||
if has_lhs {
|
||||
local kr = ("" + s).indexOf("\"rhs\":{", kcmp); if kr < 0 { return null }
|
||||
local kt = ("" + s).indexOf("\"type\":\"Int\"", kr); if kt < 0 { return null }
|
||||
local sentinel_val = Scan.read_value_int_after(s, kt)
|
||||
local kv = ("" + s).indexOf("\"value\":", kt); if kv < 0 { return null }
|
||||
local sentinel_val = JsonFragBox.read_int_after(s, kv + 8)
|
||||
// Safety check: must be valid numeric string
|
||||
if sentinel_val == null { return null }
|
||||
local sval_str = "" + sentinel_val
|
||||
@ -63,7 +69,8 @@ static box LoopScanBox {
|
||||
// rhs が変数
|
||||
local kl = ("" + s).indexOf("\"lhs\":{", kcmp); if kl < 0 { return null }
|
||||
local kt2 = ("" + s).indexOf("\"type\":\"Int\"", kl); if kt2 < 0 { return null }
|
||||
local sentinel_val2 = Scan.read_value_int_after(s, kt2)
|
||||
local kv2 = ("" + s).indexOf("\"value\":", kt2); if kv2 < 0 { return null }
|
||||
local sentinel_val2 = JsonFragBox.read_int_after(s, kv2 + 8)
|
||||
// Safety check for rhs case
|
||||
if sentinel_val2 == null { return null }
|
||||
local sval_str2 = "" + sentinel_val2
|
||||
@ -80,4 +87,3 @@ static box LoopScanBox {
|
||||
return sentinel_val2
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user