diff options
Diffstat (limited to 'src/cmd/8g/cgen.c')
| -rw-r--r-- | src/cmd/8g/cgen.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/src/cmd/8g/cgen.c b/src/cmd/8g/cgen.c index 5adf29a43..3f2a64caa 100644 --- a/src/cmd/8g/cgen.c +++ b/src/cmd/8g/cgen.c @@ -57,6 +57,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; + // inline slices if(cgen_inline(n, res)) return; @@ -162,6 +168,12 @@ cgen(Node *n, Node *res) fatal("cgen %O", n->op); break; + case OREAL: + case OIMAG: + case OCMPLX: + // TODO compile complex + return; + // these call bgen to get a bool value case OOROR: case OANDAND: @@ -729,6 +741,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) |
