From a9e03ae52a670605e8d9e62c3a071c4f0785e116 Mon Sep 17 00:00:00 2001 From: Kai Backman Date: Fri, 23 Oct 2009 10:58:29 -0700 Subject: [PATCH] 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 --- src/cmd/5g/cgen.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) 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: -- 2.50.0