From: Kai Backman Date: Fri, 23 Oct 2009 17:58:29 +0000 (-0700) Subject: fix broken code produced for ominus X-Git-Tag: weekly.2009-11-06~213 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=a9e03ae52a670605e8d9e62c3a071c4f0785e116;p=gostls13.git fix broken code produced for ominus go/test: passes 89% (308/345) R=rsc APPROVED=rsc DELTA=10 (5 added, 0 deleted, 5 changed) OCL=36005 CL=36021 --- diff --git a/src/cmd/5g/cgen.c b/src/cmd/5g/cgen.c index bba552f333..347a530f00 100644 --- a/src/cmd/5g/cgen.c +++ b/src/cmd/5g/cgen.c @@ -222,11 +222,16 @@ cgen(Node *n, Node *res) goto ret; case OMINUS: - nr = nl; - nl = &n1; - nodconst(nl, nr->type, 0); - a = optoas(OSUB, nr->type); - goto abop; + nodconst(&n3, nl->type, 0); + regalloc(&n2, nl->type, res); + regalloc(&n1, nl->type, N); + gmove(&n3, &n2); + cgen(nl, &n1); + gins(optoas(OSUB, nl->type), &n1, &n2); + gmove(&n2, res); + regfree(&n1); + regfree(&n2); + goto ret; // symmetric binary case OAND: