summaryrefslogtreecommitdiff
path: root/src/cmd/8g/cgen.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/8g/cgen.c')
-rw-r--r--src/cmd/8g/cgen.c18
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)