diff options
| author | 2025-11-14 18:49:04 +0100 | |
|---|---|---|
| committer | 2025-11-14 19:04:51 +0100 | |
| commit | a287fe5aeb6b681ab405c0297841dce64ab4b946 (patch) | |
| tree | 5ae81f3b60cc910cd356059a77e89dd50ca83b42 /ir/ir.h | |
| parent | fc91a4ce139fd0236ad9e8c4fe1e7dad42f0b178 (diff) | |
preeliminary va_list support
Diffstat (limited to 'ir/ir.h')
| -rw-r--r-- | ir/ir.h | 9 |
1 files changed, 6 insertions, 3 deletions
@@ -37,8 +37,8 @@ struct xcon { struct abiarg { union irtype ty; union { - short reg; /* >= 0 */ - short stk; /* < 0 */ + struct { ushort _ : 1, reg : 15; }; + struct { ushort isstk : 1, stk : 15; }; }; }; @@ -188,7 +188,8 @@ struct mctarg { * or negative SP offset if stack */ int (*abiarg)(short r[2], uchar cls[2], int *ni, int *nf, int *ns, union irtype); - + void (*vastart)(struct function *, struct block *, int *curi); + void (*vaarg)(struct function *, struct block *, int *curi); void (*isel)(struct function *); void (*emit)(struct function *); }; @@ -236,7 +237,9 @@ void addpred(struct block *blk, struct block *p); struct block *newblk(struct function *); void freeblk(struct function *, struct block *); struct block *insertblk(struct function *, struct block *pred, struct block *subst); +struct block *blksplitafter(struct function *, struct block *, int idx); void adduse(struct block *ublk, int ui, union ref r); +int newinstr(struct block *at, struct instr ins); union ref insertinstr(struct block *, int idx, struct instr); union ref insertphi(struct block *, enum irclass cls); void replcuses(union ref from, union ref to); |