From 390c5addd6c59075066138547285c17a9d3f49d9 Mon Sep 17 00:00:00 2001 From: Quentin Carbonneaux Date: Sat, 22 Aug 2015 16:02:12 -0400 Subject: [PATCH] output labels only when necessary --- lisc/emit.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/lisc/emit.c b/lisc/emit.c index 278f579..140edab 100644 --- a/lisc/emit.c +++ b/lisc/emit.c @@ -319,8 +319,17 @@ emitfn(Fn *fn, FILE *f) fs = framesz(fn); if (fs) fprintf(f, "\tsub $%d, %%rsp\n", fs); + for (b=fn->start; b; b=b->link) + b->visit = 0; for (b=fn->start; b; b=b->link) { - fprintf(f, ".L%s:\n", b->name); + if (b->s1 && b->link != b->s1) + b->s1->visit++; + if (b->s2 && b->link != b->s2) + b->s2->visit++; + } + for (b=fn->start; b; b=b->link) { + if (b->visit != 0) + fprintf(f, ".L%s:\n", b->name); for (i=b->ins; i-b->ins < b->nins; i++) eins(*i, fn, f); switch (b->jmp.type) {