regalloc(&n1, tmp.type, N);
gmove(&tmp, &n1);
}
- } else if(nl->addable) {
+ } else
+ if(nl->addable) {
if(!isconst(nr, CTINT)) {
tempname(&tmp, types[TINT32]);
p2 = cgenindex(nr, &tmp);
break;
}
+ tempname(&n3, nl->type);
+ cgen(nl, &n3);
+
+ tempname(&tmp, nr->type);
+ cgen(nr, &tmp);
+
regalloc(&n1, nl->type, N);
- cgen(nl, &n1);
+ gmove(&n3, &n1);
regalloc(&n2, nr->type, N);
- cgen(nr, &n2);
+ gmove(&tmp, &n2);
gcmp(optoas(OCMP, nr->type), &n1, &n2);
if(isfloat[nl->type->etype]) {
} else {
patch(gbranch(a, nr->type), to);
}
-
regfree(&n1);
regfree(&n2);
break;