]> Cypherpunks repositories - gostls13.git/commitdiff
8g: fix 386 floating point stack bug
authorCharles L. Dorian <cldorian@gmail.com>
Tue, 1 Dec 2009 23:53:50 +0000 (15:53 -0800)
committerRuss Cox <rsc@golang.org>
Tue, 1 Dec 2009 23:53:50 +0000 (15:53 -0800)
Also fixes issue 310 comment 5 error.
Fixes #310.

R=rsc
https://golang.org/cl/163042

src/cmd/8c/reg.c
src/cmd/8g/gsubr.c [changed mode: 0755->0644]
src/cmd/8g/reg.c

index a94653fff0d3e9fc8668a7cbfb03373258ef78c5..837da2d04c077cd866f249b81b2fdd6f9bb013bc 100644 (file)
@@ -254,7 +254,9 @@ regopt(Prog *p)
                 */
                case AFMOVDP:
                case AFMOVFP:
+               case AFMOVLP:
                case AFMOVVP:
+               case AFMOVWP:
                case ACALL:
                        for(z=0; z<BITS; z++)
                                addrs.b[z] |= bit.b[z];
old mode 100755 (executable)
new mode 100644 (file)
index 71a7494..2e8c01b
@@ -1289,10 +1289,12 @@ gmove(Node *f, Node *t)
                if(t->op == 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]);
index cd98be4e61011d7d4390dc40193a532b36630042..568f72912f56dac7621814b78e6ed9cd9d3085dd 100644 (file)
@@ -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<BITS; z++)
                                addrs.b[z] |= bit.b[z];