Hello r (cc: golang-dev@googlegroups.com), I'd like you to review this change.
*** Submitted as http://code.google.com/p/go/source/detail?r=8b44677ed38f *** arm register allocation/tempname allocation bug R=r CC=golang-dev http://codereview.appspot.com/4008044
LGTM On Jan 18, 2011, at 8:45 PM, ken@google.com wrote: > Reviewers: r, > > Message: > Hello r (cc: golang-dev@googlegroups.com), > > I'd like you to review this change. > > > Description: > arm register allocation/tempname allocation bug > > Please review this at http://codereview.appspot.com/4008044/ > > Affected files: > M src/cmd/5g/cgen.c > > > Index: src/cmd/5g/cgen.c > =================================================================== > --- a/src/cmd/5g/cgen.c > +++ b/src/cmd/5g/cgen.c > @@ -567,7 +567,8 @@ > 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); > @@ -1092,11 +1093,17 @@ > 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]) { > @@ -1109,7 +1116,6 @@ > } else { > patch(gbranch(a, nr->type), to); > } > - > regfree(&n1); > regfree(&n2); > break; > >