import "cffc.hff"; struct IRCtx { alloc *Allocator, } struct IRInst; struct IRFn { body *IRInst } struct IRValue { ty *const Type, u enum union { IImm i64, FImm f64, SImm [#]const u8, BImm bool, Null, Tmp int, } } enum union IRArg { Val IRValue, Ty *const Type, Fn *Decl, } enum IRInstT { neg, compl, fneg, add, sub, mul, div, mod, band, bor, xor, lsl, lsr, asr, fadd, fsub, fmul, fdiv, copy, call, ret0, } struct IRInst { t IRInstT, next *IRInst, cond *IRInst, call_nargs int, args [0]IRArg, } extern fn irdump(*IRInst) void;