]> Cypherpunks repositories - gostls13.git/commitdiff
5c, 5g, 5l: fix arm bug
authorRuss Cox <rsc@golang.org>
Wed, 22 Feb 2012 21:29:14 +0000 (16:29 -0500)
committerRuss Cox <rsc@golang.org>
Wed, 22 Feb 2012 21:29:14 +0000 (16:29 -0500)
Using reg as the flag word was unfortunate, since the
default value is not 0 but NREG (==16), which happens
to be the bit NOPTR now.  Clear it.

If I say this will fix the build, it won't.

R=golang-dev, r
CC=golang-dev
https://golang.org/cl/5690072

src/cmd/5c/txt.c
src/cmd/5g/gsubr.c
src/cmd/5g/list.c
src/cmd/5l/list.c

index dea406eb92549d55af7dd0c91552a40560c3264d..1a189e3afe336278fd771ade924a02dbb2eb74a6 100644 (file)
@@ -1185,7 +1185,8 @@ gpseudo(int a, Sym *s, Node *n)
        if(a == ATEXT) {
                p->reg = textflag;
                textflag = 0;
-       }
+       } else if(a == AGLOBL)
+               p->reg = 0;
        if(s->class == CSTATIC)
                p->from.name = D_STATIC;
        naddr(n, &p->to);
index 86f05fb32c52765e13ffdd2e32628d95cdf69bc5..9acf93670f70dc3b04ff2cc6e33d694732249db8 100644 (file)
@@ -75,6 +75,7 @@ prog(int as)
                p = dpc;
                dpc = mal(sizeof(*dpc));
                p->link = dpc;
+               p->reg = 0;  // used for flags
        } else {
                p = pc;
                pc = mal(sizeof(*pc));
@@ -1116,7 +1117,8 @@ gins(int as, Node *f, Node *t)
        if(f != N)
                naddr(f, &af, 1);
        if(t != N)
-               naddr(t, &at, 1);       p = prog(as);
+               naddr(t, &at, 1);
+       p = prog(as);
        if(f != N)
                p->from = af;
        if(t != N)
index fef9c85435fd96e51117ccd59a1b338462aca62f..9bc3a9a9a641de1fd58f79825366363fdbdf7b1e 100644 (file)
@@ -59,7 +59,7 @@ Pconv(Fmt *fp)
        switch(p->as) {
        default:
                snprint(str1, sizeof(str1), "%A%C", p->as, p->scond);
-               if(p->reg == NREG)
+               if(p->reg == NREG && p->as != AGLOBL)
                        snprint(str, sizeof(str), "%.4d (%L) %-7s       %D,%D", 
                                p->loc, p->lineno, str1, &p->from, &p->to);
                else
index fa838215b1bf039772e38bf9f1b9e56e5e3bfad9..7b623d78a54c4ff852bf995aaa61496e3672d996 100644 (file)
@@ -65,7 +65,7 @@ Pconv(Fmt *fp)
        switch(a) {
        default:
                fmtprint(fp, "(%d)", p->line);
-               if(p->reg == NREG)
+               if(p->reg == NREG && p->as != AGLOBL)
                        fmtprint(fp, "  %A%C    %D,%D",
                                a, p->scond, &p->from, &p->to);
                else