diff options
Diffstat (limited to 'src/cmd/gc/align.c')
| -rw-r--r-- | src/cmd/gc/align.c | 24 |
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); |
