reverting 7c change, breaks some 64-bit shifts...

This commit is contained in:
cinap_lenrek 2020-08-03 23:16:41 +02:00
parent cbe45e78f9
commit d42f9b5110

View file

@ -287,25 +287,28 @@ cgenrel(Node *n, Node *nn, int inrel)
reglcgen(&nod2, l, Z); reglcgen(&nod2, l, Z);
else else
nod2 = *l; nod2 = *l;
regalloc(&nod1, r, Z); regalloc(&nod, n, nn);
cgen(r, &nod1); cgen(r, &nod);
} else { } else {
regalloc(&nod1, r, Z); regalloc(&nod, n, nn);
cgen(r, &nod1); cgen(r, &nod);
if(l->addable < INDEXED) if(l->addable < INDEXED)
reglcgen(&nod2, l, Z); reglcgen(&nod2, l, Z);
else else
nod2 = *l; nod2 = *l;
} }
if(nod1.type == nod2.type || !typefd[nod1.type->etype]) regalloc(&nod1, n, Z);
regalloc(&nod, &nod2, nn); gopcode(OAS, &nod2, Z, &nod1);
else if(nod1.type->etype != nod.type->etype){
regalloc(&nod, &nod1, Z); regalloc(&nod3, &nod, Z);
gmove(&nod2, &nod); gmove(&nod1, &nod3);
gopcode(o, &nod1, &nod, &nod); regfree(&nod1);
nod1 = nod3;
}
gopcode(o, &nod, &nod1, &nod);
gmove(&nod, &nod2); gmove(&nod, &nod2);
if(nn != Z) if(nn != Z)
gmove(&nod2, nn); gmove(&nod, nn);
regfree(&nod); regfree(&nod);
regfree(&nod1); regfree(&nod1);
if(l->addable < INDEXED) if(l->addable < INDEXED)