> 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