From: Russ Cox Date: Fri, 22 Oct 2010 03:50:45 +0000 (+0200) Subject: 5g: missed one case last night X-Git-Tag: weekly.2010-10-27~46 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=45c48d51f7ca98c9f393bca76ec779ecae948ef7;p=gostls13.git 5g: missed one case last night R=ken2 CC=golang-dev https://golang.org/cl/2658042 --- diff --git a/src/cmd/5g/cgen.c b/src/cmd/5g/cgen.c index 3d96000c8a..bbe5b9c0b7 100644 --- a/src/cmd/5g/cgen.c +++ b/src/cmd/5g/cgen.c @@ -170,8 +170,8 @@ cgen(Node *n, Node *res) case OREAL: case OIMAG: case OCMPLX: - // TODO compile complex - return; + fatal("unexpected complex"); + break; // these call bgen to get a bool value case OOROR: @@ -828,12 +828,6 @@ bgen(Node *n, int true, Prog *to) nl = n->left; nr = n->right; - // TODO compile complex - if(nl != N && nl->type != T && iscomplex[nl->type->etype]) - return; - if(nr != N && nr->type != T && iscomplex[nr->type->etype]) - return; - if(n->type == T) { convlit(&n, types[TBOOL]); if(n->type == T) @@ -954,6 +948,7 @@ bgen(Node *n, int true, Prog *to) goto ret; } a = brcom(a); + true = !true; } // make simplest on right @@ -1014,6 +1009,11 @@ bgen(Node *n, int true, Prog *to) break; } + if(iscomplex[nl->type->etype]) { + complexbool(a, nl, nr, true, to); + break; + } + if(is64(nr->type)) { if(!nl->addable) { tempname(&n1, nl->type);