From: Charles L. Dorian Date: Tue, 1 Dec 2009 23:53:50 +0000 (-0800) Subject: 8g: fix 386 floating point stack bug X-Git-Tag: weekly.2009-12-07~86 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=e1c347ca59dbcbac447989ee0065c6ff99a00d0a;p=gostls13.git 8g: fix 386 floating point stack bug Also fixes issue 310 comment 5 error. Fixes #310. R=rsc https://golang.org/cl/163042 --- diff --git a/src/cmd/8c/reg.c b/src/cmd/8c/reg.c index a94653fff0..837da2d04c 100644 --- a/src/cmd/8c/reg.c +++ b/src/cmd/8c/reg.c @@ -254,7 +254,9 @@ regopt(Prog *p) */ case AFMOVDP: case AFMOVFP: + case AFMOVLP: case AFMOVVP: + case AFMOVWP: case ACALL: for(z=0; zop == OREGISTER) goto hardmem; nodreg(&r1, types[ft], D_F0); - if(ft == TFLOAT32 && f->op != OREGISTER) - gins(AFMOVF, f, &r1); - else - gins(AFMOVD, f, &r1); + if(f->op != OREGISTER) { + if(ft == TFLOAT32) + gins(AFMOVF, f, &r1); + else + gins(AFMOVD, f, &r1); + } // set round to zero mode during conversion tempalloc(&t1, types[TUINT16]); diff --git a/src/cmd/8g/reg.c b/src/cmd/8g/reg.c index cd98be4e61..568f72912f 100644 --- a/src/cmd/8g/reg.c +++ b/src/cmd/8g/reg.c @@ -306,8 +306,9 @@ regopt(Prog *firstp) */ case AFMOVDP: case AFMOVFP: - case AFMOVVP: case AFMOVLP: + case AFMOVVP: + case AFMOVWP: case ACALL: for(z=0; z