From 87f9753fb776a1fa6e59baef759e4687fb9a1ac7 Mon Sep 17 00:00:00 2001 From: lemon Date: Fri, 21 Nov 2025 17:07:28 +0100 Subject: ir: barebones IR passes checked contracts --- ir/ir.h | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'ir/ir.h') diff --git a/ir/ir.h b/ir/ir.h index 0879b86..1c7c02e 100644 --- a/ir/ir.h +++ b/ir/ir.h @@ -153,6 +153,12 @@ rsiter(int *i, uvlong rs) return 1; } +enum { + FNBLKID = 1<<0, + FNUSE = 1<<1, + FNRPO = 1<<2, + FNDOM = 1<<3, +}; struct function { struct arena **arena; const char *name; @@ -161,6 +167,7 @@ struct function { short *nuse; union type fnty, retty; struct abiarg *abiarg, abiret[2]; + uint prop; uint nblk; int stksiz; ushort nabiarg, nabiret; @@ -168,6 +175,7 @@ struct function { bool isleaf; regset regusage; }; +#define FREQUIRE(_prop) assert((fn->prop & (_prop)) && "preconditions not met") enum objkind { OBJELF }; enum mcisa { ISamd64 }; -- cgit v1.2.3