if(n->addable == 0)
goto def;
nodconst(&n1, n->type, 0);
- gins(optoas(OCMP, n->type), n, &n1);
+ regalloc(&n2, n->type, N);
+ regalloc(&n3, n->type, N);
+ cgen(&n1, &n2);
+ cgen(n, &n3);
+ p1 = gins(optoas(OCMP, n->type), &n2, N);
+ p1->reg = n3.val.u.reg;
a = ABNE;
if(!true)
a = ABEQ;
patch(gbranch(a, n->type), to);
+ regfree(&n2);
+ regfree(&n3);
goto ret;
case OANDAND:
case CASE(TUINT64, TUINT64):
split64(f, &flo, &fhi);
split64(t, &tlo, &thi);
- if(f->op == OLITERAL) {
- gins(AMOVW, &flo, &tlo);
- gins(AMOVW, &fhi, &thi);
- } else {
- regalloc(&r1, flo.type, N);
- regalloc(&r2, fhi.type, N);
- gins(AMOVW, &flo, &r1);
- gins(AMOVW, &fhi, &r2);
- gins(AMOVW, &r1, &tlo);
- gins(AMOVW, &r2, &thi);
- regfree(&r1);
- regfree(&r2);
- }
+ regalloc(&r1, flo.type, N);
+ regalloc(&r2, fhi.type, N);
+ gins(AMOVW, &flo, &r1);
+ gins(AMOVW, &fhi, &r2);
+ gins(AMOVW, &r1, &tlo);
+ gins(AMOVW, &r2, &thi);
+ regfree(&r1);
+ regfree(&r2);
splitclean();
splitclean();
return;