code gen error
SVN=121541
if(res == N || res->type == T)
fatal("cgen: res nil");
+ if(n->ullman >= UINF) {
+ if(n->op == OINDREG)
+ fatal("cgen: this is going to misscompile");
+ if(res->ullman >= UINF)
+ fatal("cgen: fun both sides");
+ }
+
lno = dynlineno;
if(n->op != ONAME)
dynlineno = n->lineno; // for diagnostics
}
if(!res->addable) {
+ if(n->ullman > res->ullman) {
+ regalloc(&n1, nr->type, res);
+ cgen(n, &n1);
+ cgen(&n1, res);
+ regfree(&n1);
+ return;
+ }
+
igen(res, &n1, N);
cgen(n, &n1);
regfree(&n1);
Node n1, n2;
int a;
- // botch compare ullman numbers
- // and use temp for functions
+ if(nr->ullman >= UINF && nl->ullman >= UINF) {
+ fatal("cgen_asop both sides call");
+ }
a = optoas(op, nl->type);
+ if(nr->ullman > nl->ullman) {
+ fatal("gcgen_asopen");
+ }
+
regalloc(&n1, nl->type, N);
if(nl->addable) {
cgen(nr, &n1);
nr->addable = 1;
ullmancalc(nr);
}
+
+ if(nr->ullman >= UINF && nl->ullman >= UINF) {
+ fatal("cgen_as both sides call");
+ }
cgen(nr, nl);
}