From c64986f706936a6f1e2e23592275eb78f88d0ec6 Mon Sep 17 00:00:00 2001 From: Russ Cox Date: Fri, 18 Sep 2009 17:08:18 -0700 Subject: [PATCH] merge first pass into main loop in span calculation. having one copy will cut nacl changes in half. R=ken OCL=34815 CL=34815 --- src/cmd/8l/span.c | 71 +++++++++++++++++------------------------------ 1 file changed, 26 insertions(+), 45 deletions(-) diff --git a/src/cmd/8l/span.c b/src/cmd/8l/span.c index 0b2d70e8e6..febfc9afdc 100644 --- a/src/cmd/8l/span.c +++ b/src/cmd/8l/span.c @@ -65,56 +65,37 @@ span(void) } } n = 0; - start: - if(debug['v']) - Bprint(&bso, "%5.2f span\n", cputime()); - Bflush(&bso); - c = INITTEXT; - for(p = firstp; p != P; p = p->link) { - if(p->as == ATEXT) - curtext = p; - if(p->to.type == D_BRANCH) - if(p->back) - p->pc = c; - asmins(p); - p->pc = c; - m = andptr-and; - p->mark = m; - c += m; - } - -loop: - n++; - if(debug['v']) - Bprint(&bso, "%5.2f span %d\n", cputime(), n); - Bflush(&bso); - if(n > 50) { - print("span must be looping\n"); - errorexit(); - } - again = 0; - c = INITTEXT; - for(p = firstp; p != P; p = p->link) { - if(p->as == ATEXT) - curtext = p; - if(p->to.type == D_BRANCH) { - if(p->back) - p->pc = c; - asmins(p); - m = andptr-and; - if(m != p->mark) { + do{ + again = 0; + if(debug['v']) + Bprint(&bso, "%5.2f span %d\n", cputime(), n); + Bflush(&bso); + if(n > 50) { + print("span must be looping\n"); + errorexit(); + } + c = INITTEXT; + for(p = firstp; p != P; p = p->link) { + if(p->as == ATEXT) + curtext = p; + if(p->to.type == D_BRANCH) + if(p->back) + p->pc = c; + if(n == 0 || p->to.type == D_BRANCH) { + asmins(p); + m = andptr-and; p->mark = m; - again++; } + if(c != p->pc) + again = 1; + p->pc = c; + c += p->mark; } - p->pc = c; - c += p->mark; - } - if(again) { textsize = c; - goto loop; - } + n++; + }while(again); + if(INITRND) { INITDAT = rnd(c, INITRND); if(INITDAT != idat) { -- 2.48.1