if(n->op == OINDREG)
fatal("cgen: this is going to misscompile");
if(res->ullman >= UINF) {
- dump("fncalls", n);
- fatal("cgen: node and result functions");
+ tempname(&n1, n->type);
+ cgen(n, &n1);
+ cgen(&n1, res);
+ goto ret;
}
}
cgen(n, &n1);
cgen(&n1, res);
regfree(&n1);
- return;
+ goto ret;
}
igen(res, &n1, N);
nr = n->right;
if(nr->ullman >= UINF && nl->ullman >= UINF) {
- fatal("cgen_asop: both sides call");
+ tempname(&n1, nr->type);
+ cgen(nr, &n1);
+ n2 = *n;
+ n2.right = &n1;
+ cgen_asop(&n2);
+ return;
}
if(nr->ullman > nl->ullman) {
ullmancalc(nr);
}
- if(nr->ullman >= UINF && nl->ullman >= UINF) {
- fatal("cgen_as both sides call");
- }
cgen(nr, nl);
ret: