From e1c347ca59dbcbac447989ee0065c6ff99a00d0a Mon Sep 17 00:00:00 2001 From: "Charles L. Dorian" Date: Tue, 1 Dec 2009 15:53:50 -0800 Subject: [PATCH] 8g: fix 386 floating point stack bug Also fixes issue 310 comment 5 error. Fixes #310. R=rsc https://golang.org/cl/163042 --- src/cmd/8c/reg.c | 2 ++ src/cmd/8g/gsubr.c | 10 ++++++---- src/cmd/8g/reg.c | 3 ++- 3 files changed, 10 insertions(+), 5 deletions(-) mode change 100755 => 100644 src/cmd/8g/gsubr.c 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