aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAndrew Gerrand <adg@golang.org>2011-06-29 15:33:16 +1000
committerAndrew Gerrand <adg@golang.org>2011-06-29 15:33:16 +1000
commitf12a1d38b26f698ee6b52d1845d79413f63ff9be (patch)
tree2862738084465258167c277841d4b699539afbd2
parent3b32b3eb3d38706aec35aa4bb66088f3a4e3899c (diff)
downloadgo-f12a1d38b26f698ee6b52d1845d79413f63ff9be.tar.gz
go-f12a1d38b26f698ee6b52d1845d79413f63ff9be.zip
[release-branch.r58] 6g, 8g: fix goto fix
««« CL 4632041 / cbc2b570b2ca 6g, 8g: fix goto fix R=ken2 CC=golang-dev https://golang.org/cl/4632041 »»» R=rsc CC=golang-dev https://golang.org/cl/4667046
-rw-r--r--src/cmd/6g/gsubr.c5
-rw-r--r--src/cmd/8g/gsubr.c5
2 files changed, 8 insertions, 2 deletions
diff --git a/src/cmd/6g/gsubr.c b/src/cmd/6g/gsubr.c
index 66dac11859..49d66e0833 100644
--- a/src/cmd/6g/gsubr.c
+++ b/src/cmd/6g/gsubr.c
@@ -125,7 +125,7 @@ clearstk(void)
{
Plist *pl;
Prog *p1, *p2;
- Node sp, di, cx, con;
+ Node sp, di, cx, con, ax;
if((uint32)plast->firstpc->to.offset <= 0)
return;
@@ -147,6 +147,9 @@ clearstk(void)
gins(ACLD, N, N);
gins(AMOVQ, &sp, &di);
gins(AMOVQ, &con, &cx);
+ nodconst(&con, types[TUINT64], 0);
+ nodreg(&ax, types[TUINT64], D_AX);
+ gins(AMOVQ, &con, &ax);
gins(AREP, N, N);
gins(ASTOSQ, N, N);
diff --git a/src/cmd/8g/gsubr.c b/src/cmd/8g/gsubr.c
index d0c7310251..a8d65cf22f 100644
--- a/src/cmd/8g/gsubr.c
+++ b/src/cmd/8g/gsubr.c
@@ -127,7 +127,7 @@ clearstk(void)
{
Plist *pl;
Prog *p1, *p2;
- Node sp, di, cx, con;
+ Node sp, di, cx, con, ax;
if(plast->firstpc->to.offset <= 0)
return;
@@ -149,6 +149,9 @@ clearstk(void)
gins(ACLD, N, N);
gins(AMOVL, &sp, &di);
gins(AMOVL, &con, &cx);
+ nodconst(&con, types[TUINT32], 0);
+ nodreg(&ax, types[TUINT32], D_AX);
+ gins(AMOVL, &con, &ax);
gins(AREP, N, N);
gins(ASTOSL, N, N);