summaryrefslogtreecommitdiff
path: root/src/cmd/gc/align.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/cmd/gc/align.c')
-rw-r--r--src/cmd/gc/align.c24
1 files changed, 22 insertions, 2 deletions
diff --git a/src/cmd/gc/align.c b/src/cmd/gc/align.c
index dfb9f9e89..095645955 100644
--- a/src/cmd/gc/align.c
+++ b/src/cmd/gc/align.c
@@ -166,8 +166,12 @@ dowidth(Type *t)
case TINT64:
case TUINT64:
case TFLOAT64:
+ case TCOMPLEX64:
w = 8;
break;
+ case TCOMPLEX128:
+ w = 16;
+ break;
case TPTR32:
w = 4;
checkwidth(t->type);
@@ -385,10 +389,14 @@ typeinit(void)
isint[TUINT] = 1;
isint[TUINTPTR] = 1;
- for(i=TFLOAT32; i<=TFLOAT64; i++)
- isfloat[i] = 1;
+ isfloat[TFLOAT32] = 1;
+ isfloat[TFLOAT64] = 1;
isfloat[TFLOAT] = 1;
+ iscomplex[TCOMPLEX64] = 1;
+ iscomplex[TCOMPLEX128] = 1;
+ iscomplex[TCOMPLEX] = 1;
+
isptr[TPTR32] = 1;
isptr[TPTR64] = 1;
@@ -425,6 +433,13 @@ typeinit(void)
minfltval[i] = mal(sizeof(*minfltval[i]));
maxfltval[i] = mal(sizeof(*maxfltval[i]));
}
+ if(iscomplex[i]) {
+ okforeq[i] = 1;
+ okforadd[i] = 1;
+ okforarith[i] = 1;
+ okforconst[i] = 1;
+// issimple[i] = 1;
+ }
}
issimple[TBOOL] = 1;
@@ -518,6 +533,11 @@ typeinit(void)
mpatoflt(maxfltval[TFLOAT64], "18014398509481983p970"); /* 2^53-1 p (1023-52) + 1/2 ulp */
mpatoflt(minfltval[TFLOAT64], "-18014398509481983p970");
+ maxfltval[TCOMPLEX64] = maxfltval[TFLOAT32];
+ minfltval[TCOMPLEX64] = minfltval[TFLOAT32];
+ maxfltval[TCOMPLEX128] = maxfltval[TFLOAT64];
+ minfltval[TCOMPLEX128] = minfltval[TFLOAT64];
+
/* for walk to use in error messages */
types[TFUNC] = functype(N, nil, nil);