code wiki / (root) / smoke_regalloc_min6.nx

smoke_regalloc_min6.nx source

↩ module page · 29 lines · 933 B

1// 2 consts + binop, NO return -- isolate whether binop alone crashes. 2import "syscalls.nx" 3import "types.nx" 4import "ir.nx" 5import "regalloc.nx" 6 7func main() -> i64 { 8 let m_raw: *u8 = sys_mmap(256) 9 let m: *Module = m_raw as *Module 10 m.functions = 0 as *Function 11 m.n_functions = 0 12 let f: *Function = ir_function_new(m, "binop" as *u8, 5, ir_type_i64()) 13 let b: *BasicBlock = ir_block_new(f) 14 let c1: i64 = ir_const_i64(f, 10) 15 let c2: i64 = ir_const_i64(f, 20) 16 ir_emit_binop(b, OP_ADD, c1, c2, ir_type_i64()) 17 // NO return. 18 19 let locs_raw: *u8 = sys_mmap(4096) 20 let locs: *ValueLoc = locs_raw as *ValueLoc 21 let mask_raw: *u8 = sys_mmap(16) 22 let mask: *i64 = mask_raw as *i64 23 *mask = 0 24 let sb_raw: *u8 = sys_mmap(16) 25 let sb: *i64 = sb_raw as *i64 26 *sb = 0 27 regalloc_function(f, locs, mask, sb) 28 return __syscall(93, 42, 0, 0, 0, 0, 0) 29}