From df41a4512932f1312e4725d0409757a683b091ed Mon Sep 17 00:00:00 2001 From: lemon Date: Sat, 20 Aug 2022 06:35:05 +0200 Subject: defer fix --- bootstrap/cgen.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) (limited to 'bootstrap/cgen.c') diff --git a/bootstrap/cgen.c b/bootstrap/cgen.c index 94ae420..5fae699 100644 --- a/bootstrap/cgen.c +++ b/bootstrap/cgen.c @@ -488,6 +488,14 @@ genblock(struct blockstmt block) { pri("{\n"); for (int i = 0; i < block.stmts.n; ++i) genstmt(&block, &block.stmts.d[i]); + for (struct defer* defer = block.defers; defer; defer = defer->next) { + if (defer->blockid != block.id) + continue; + const char *p = fileid2path(defer->ex.span.fileid); + pri("\n#line %d %S\n", defer->ex.span.line, p, (u64)strlen(p)); + genexpr(&defer->ex); + pri(";\n"); + } pri("}\n"); } @@ -699,15 +707,7 @@ genfn(bool externp, const char *cname, struct fn *fn) { if (!fn->body) { pri(";\n"); } else { - pri("{"); genblock(fn->body->block); - for (struct defer* defer = fn->body->block.defers; defer; defer = defer->next) { - const char *p = fileid2path(defer->ex.span.fileid); - pri("\n#line %d %S\n", defer->ex.span.line, p, (u64)strlen(p)); - genexpr(&defer->ex); - pri(";\n"); - } - pri("}"); } } -- cgit v1.2.3