diff options
Diffstat (limited to 'src/cmd/5g/cgen.c')
| -rw-r--r-- | src/cmd/5g/cgen.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/cmd/5g/cgen.c b/src/cmd/5g/cgen.c index 48d5e3c22..ce931600e 100644 --- a/src/cmd/5g/cgen.c +++ b/src/cmd/5g/cgen.c @@ -55,6 +55,12 @@ cgen(Node *n, Node *res) if(res == N || res->type == T) fatal("cgen: res nil"); + // TODO compile complex + if(n != N && n->type != T && iscomplex[n->type->etype]) + return; + if(res != N && res->type != T && iscomplex[res->type->etype]) + return; + while(n->op == OCONVNOP) n = n->left; @@ -186,6 +192,12 @@ cgen(Node *n, Node *res) fatal("cgen: unknown op %N", n); break; + case OREAL: + case OIMAG: + case OCMPLX: + // TODO compile complex + return; + // these call bgen to get a bool value case OOROR: case OANDAND: @@ -787,6 +799,12 @@ 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) |
