> since even ghostscript doesn't get into this state, i'd be interested
> in the line of code (and types of the variables) that hits this fatal
> condition.

Here it is, "before" and "after" I applied some trivial "simplification":

/*
                for(i=0, j=(stkptrsize-stkzerosize)/widthptr*2; i<stkzerosize; 
i+=widthptr, j+=2)
                        if(bvget(bv, j) || bvget(bv, j+1))
                                p = appendp(p, AMOVL, D_CONST, 0, D_SP+D_INDIR, 
frame-stkzerosize+i);
*/
                i = 0;
                j = (stkptrsize-stkzerosize)/widthptr*2;
                while (i < stkzerosize) {
                        int f = frame - stkzerosize + i;
                        if(bvget(bv, j) || bvget(bv, j+1)) {
                                p = appendp(p, AMOVL, D_CONST, 0, D_SP+D_INDIR, 
f);
                        }
                        i += widthptr;
                        j += 2;
                }

around line 40 in $GOROOT/src/cmd/8g/ggen.c.

Thank you, Erik, for your invaluable input, it seems to work now.

++L


Reply via email to