From 19f1093f0929b989a06cdee2e7d175e6db15559c Mon Sep 17 00:00:00 2001 From: lemon Date: Thu, 11 Aug 2022 20:27:48 +0200 Subject: things --- bootstrap/cgen.c | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) (limited to 'bootstrap/cgen.c') diff --git a/bootstrap/cgen.c b/bootstrap/cgen.c index f79e112..1629151 100644 --- a/bootstrap/cgen.c +++ b/bootstrap/cgen.c @@ -338,7 +338,7 @@ genstmt(struct stmt *stmt) { pri("if (%e) ", &stmt->ifelse.test); genblock(stmt->ifelse.t); if (stmt->ifelse.f) { - pri("else "); + pri("else\n"); genstmt(stmt->ifelse.f); } break; @@ -389,7 +389,7 @@ genstmt(struct stmt *stmt) { struct euswitchcase c = stmt->euswitch.cs.d[i]; pri("case /* %s */ %d: ", c.fld->name, c.vval); if (c.capt) - pri("{ %t %s_%d__ = __stmp.u.%s;\n", c.fld->ty, c.capt, c.captid, c.fld->name); + pri("{ %t %s_%d__ = __stmp.u.%s_;\n", c.fld->ty, c.capt, c.captid, c.fld->name); genblock(c.t); if (c.capt) pri("}\n"); @@ -618,7 +618,7 @@ genfn(bool externp, const char *cname, struct fn *fn) { pri("static "); pri("%t %s(", fn->retty, cname); for (int i = 0; i < fn->params.n; ++i) { - pri("%t %s", fn->params.d[i].ty, fn->params.d[i].name); + pri("%t %s", fn->params.d[i].ty, fn->params.d[i].name ? fn->params.d[i].name : ""); if (i < fn->params.n - 1 || fn->variadic) pri(", "); } @@ -752,6 +752,11 @@ defctype(const struct type *ty, void *_) { *cname = (char *)unconstify(ty)->_cname; break; } + for (int i = 0; i < ty->agg.flds.n; ++i) { + struct aggfield *fld = &ty->agg.flds.d[i]; + if (fld->ty) + defctype(fld->ty, NULL); + } *cname = xasprintf("__ty%s%d", ty->agg.name ? ty->agg.name : "", id++); pri("typedef struct %s %s;\n", *cname, *cname); if (!ty->agg.fwd) { -- cgit v1.2.3