aboutsummaryrefslogtreecommitdiffhomepage
path: root/ir/ir.h
diff options
context:
space:
mode:
authorlemon <lsof@mailbox.org>2025-11-21 17:07:28 +0100
committerlemon <lsof@mailbox.org>2025-11-21 17:35:55 +0100
commit87f9753fb776a1fa6e59baef759e4687fb9a1ac7 (patch)
tree192e36f06ac1bda63c3dceced36cb9c8562ca713 /ir/ir.h
parent821adf9e5c962c97e46f3a215c876bc10916e302 (diff)
ir: barebones IR passes checked contracts
Diffstat (limited to 'ir/ir.h')
-rw-r--r--ir/ir.h8
1 files changed, 8 insertions, 0 deletions
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 };