code wiki / (root) / nx_smoke_regalloc_min.nx

nx_smoke_regalloc_min.nx source

↩ module page · 40 lines · 1310 B

1// Minimal regalloc invocation: build a Function with NO values 2// and call regalloc_function. If even this crashes, the bug is 3// in the regalloc setup itself. 4 5// nx_safety_envelope: 6// intended_use: AUTO_APPLIED -- primitive-specific tuning queued 7// sil_target: SIL1 8// evidence: [bulk_applied_2026-05-16, see-file-comment-for-detail] 9// verdict: NOT_YET_EVALUATED 10 11import "nx_syscalls.nx" 12import "nx_types.nx" 13import "nx_ir.nx" 14import "nx_regalloc.nx" 15const K_MAGIC_4096: i64 = 4096 16 17func main() -> i64 { 18 let m_raw: *u8 = sys_mmap(256) 19 let m: *Module = m_raw as *Module 20 m.functions = 0 as *Function 21 m.n_functions = 0 22 let f: *Function = ir_function_new(m, "empty" as *u8, 5, ir_type_i64()) 23 let b: *BasicBlock = ir_block_new(f) 24 ir_emit_return(b, ir_const_i64(f, 0)) 25 26 let locs_raw: *u8 = sys_mmap(K_MAGIC_4096) 27 let locs: *ValueLoc = locs_raw as *ValueLoc 28 let mask_raw: *u8 = sys_mmap(16) 29 let mask: *i64 = mask_raw as *i64 30 *mask = 0 31 let sb_raw: *u8 = sys_mmap(16) 32 let sb: *i64 = sb_raw as *i64 33 *sb = 0 34 let mask_fpr_raw: *u8 = sys_mmap(16) 35 let mask_fpr: *i64 = mask_fpr_raw as *i64 36 *mask_fpr = 0 37 38 regalloc_function(f, locs, mask, mask_fpr, sb) 39 return __syscall(93, 42, 0, 0, 0, 0, 0) 40}