From e305f71c3cbd685eacb77451b3728b2cac492d71 Mon Sep 17 00:00:00 2001 From: lemon Date: Sun, 7 Aug 2022 21:14:05 +0200 Subject: fix (for some reason this only segfaulted on -m32) --- bootstrap/cgen.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'bootstrap/cgen.c') diff --git a/bootstrap/cgen.c b/bootstrap/cgen.c index 3bd6710..df5ccbc 100644 --- a/bootstrap/cgen.c +++ b/bootstrap/cgen.c @@ -143,9 +143,9 @@ geniniex(struct expr *ex) { for (int i = 0; i < ex->ini.args.n; ++i) { struct iniarg *arg = &ex->ini.args.d[i]; if (ex->ty->t == TYarr) - pri("[%I] = %e, ", arg->idx, arg->ex); + pri("[%I] = %e, ", arg->idx, &arg->ex); else - pri(".%s = %e, ", arg->fld, arg->ex); + pri(".%s = %e, ", arg->fld, &arg->ex); } pri("}"); @@ -581,8 +581,10 @@ defctype(const struct type *ty, void *_) { *cname = xasprintf("__ty%d", id++); pri("typedef struct { %t *ptr; size_t len; } %s;\n", ty->child, *cname); - pri("_Static_assert(sizeof(%s) == %U);\n", *cname, (u64)ty->size); - pri("_Static_assert(__alignof__(%s) == %U);\n", *cname, (u64)ty->align); + pri("_Static_assert(sizeof(%s) == %U, \"sizeof(%t) == %U\");\n", + *cname, (u64)ty->size, ty, (u64)ty->size); + pri("_Static_assert(__alignof__(%s) == %U, \"__alignof__(%t) == %U\");\n", + *cname, (u64)ty->align, ty, (u64)ty->align); break; case TYfn: *cname = xasprintf("__ty%d", id++); @@ -620,8 +622,10 @@ defctype(const struct type *ty, void *_) { pri("%t %s;\n", fld.ty, fld.name); } pri("};\n"); - pri("_Static_assert(sizeof(%s) == %U);\n", *cname, (u64)ty->size); - pri("_Static_assert(__alignof__(%s) == %U);\n", *cname, (u64)ty->align); + pri("_Static_assert(sizeof(%s) == %U, \"sizeof(%t) == %U\");\n", + *cname, (u64)ty->size, ty, (u64)ty->size); + pri("_Static_assert(__alignof__(%s) == %U, \"__alignof__(%t) == %U\");\n", + *cname, (u64)ty->align, ty, (u64)ty->align); } for (int i = 0; i < ty->agg.decls.n; ++i) liftdecl(ty->agg.decls.d[i]); -- cgit v1.2.3