From f453b313f62ba42d748f00628be7b3750c797c86 Mon Sep 17 00:00:00 2001 From: lemon Date: Thu, 29 Jun 2023 09:59:30 +0200 Subject: add initializers (only static for initialier list rn) and other fixes --- ir.h | 16 ++++------------ 1 file changed, 4 insertions(+), 12 deletions(-) (limited to 'ir.h') diff --git a/ir.h b/ir.h index 6507fe0..b206550 100644 --- a/ir.h +++ b/ir.h @@ -16,19 +16,11 @@ union irtype { }; struct irdat { - uchar align : 6, mut : 1, globl : 1; + uchar align : 6, globl : 1; + uchar section; uint siz; - union { - vec_of(uchar) dat; - uchar sdat[8]; - }; + uint off; const char *name; - struct symref { - struct symref *next; - const char *sym; - uint off; - vlong addend; - } *syms; }; struct xcon { @@ -221,13 +213,13 @@ union ref mkfltcon(enum irclass, double); #define isintcon(r) (iscon(r) && kisint(concls(r))) #define isfltcon(r) ((r).t == RXCON && kisflt(conht[(r).i].cls)) #define isnumcon(r) ((r).t == RICON || ((r).t == RXCON && conht[(r).i].cls)) +#define isaddrcon(r) ((r).t == RXCON && !conht[(r).i].cls && !conht[(r).i].deref) #define intconval(r) ((r).t == RICON ? (r).i : conht[(r).i].i) #define fltconval(r) (conht[(r).i].f) union ref mksymref(const char *); union ref mkdatref(const char *name, uint siz, uint align, const void *, uint n, bool deref); const char *xcon2sym(int ref); struct instr mkalloca(uint siz, uint align); -void conputdat(struct irdat *, uint off, enum typetag t, const void *dat); union ref mkcallarg(union irtype ret, uint narg, int vararg); #define mkintrin(B, C, N) mkinstr(Ointrin, C, {.t=RICON,B}, mkcallarg((union irtype){{0}},N,-1)) union ref mkaddr(struct addr); -- cgit v1.2.3