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