reported here http://9fans.net/narchive/2009/08/1042
i haven't had much time to even look at this problem. this will at least abort the compile, rather than miscompile. so it's marginally better than nothing. the warning is just documentation of the problem. i recompiled everything with this patch and didn't see it trip (except in my lucky code), so i wonder if there is always a problem if t->right->reg != D_DX holds. /n/sources/plan9//sys/src/cmd/8c/cgen64.c:2293,2298 - cgen64.c:2293,2300 evacaxdx(l); } } + if(l->op == OSUB && l->right != Z && l->right->op == OCAST) + warn(n, "likely vlong bug"); t = regpair(Z, n); sugen(r, t, 8); r = t; /n/sources/plan9//sys/src/cmd/8c/cgen64.c:2336,2341 - cgen64.c:2338,2344 zapreg(t->left); } if(t->right->reg != D_DX) { + fatal(Z, "vlong double-spill botch"); d = &nod4; regsalloc(d, t->right); gmove(&nod2, d); - erik