diff options
Diffstat (limited to 'ws.c')
| -rw-r--r-- | ws.c | 29 |
1 files changed, 29 insertions, 0 deletions
@@ -0,0 +1,29 @@ +#include "ws.h" +#include "fn.h" +#include "prv.h" +#include "parse.h" +#include "storage.h" + +static int wspush(const struct stentry *e, struct cgen *c) +{ + const struct type *t = e->t; + + printf("%%%s_ =l alloc%zu %zu\n", e->tk->s, t->align, t->sz); + return 0; +} + +int ws_cgen(const struct storage *s, struct cgen *c) +{ + for (size_t i = 0; i < s->nentries; i++) + if (wspush(&s->entries[i], c)) + return -1; + + return 0; +} + +int ws(const struct lex *l, struct prv *p) +{ + struct fn *fn = fn_cur(p); + + return storage(l, p, "storage section", 1, &fn->ws); +} |
