diff options
author | Kai Backman <kaib@golang.org> | 2010-02-10 22:42:05 -0800 |
---|---|---|
committer | Kai Backman <kaib@golang.org> | 2010-02-10 22:42:05 -0800 |
commit | 494bcc80e488112bb1439eec8362ac7b49985629 (patch) | |
tree | 68d108439daeb66e66fef16c7d1e9d91b82a898a | |
parent | 22a7f2a14d8fd870913942707dd3f30a30bb1eeb (diff) | |
download | go-494bcc80e488112bb1439eec8362ac7b49985629.tar.gz go-494bcc80e488112bb1439eec8362ac7b49985629.zip |
stop the 5c optimizer from clobbering extern static registers.
R=rsc, ken2
CC=golang-dev
https://golang.org/cl/204064
-rw-r--r-- | src/cmd/5c/reg.c | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/cmd/5c/reg.c b/src/cmd/5c/reg.c index a1508b91aa..f2d38d5196 100644 --- a/src/cmd/5c/reg.c +++ b/src/cmd/5c/reg.c @@ -79,6 +79,10 @@ regopt(Prog *p) Reg* p; } log5[6], *lp; + // TODO(kaib): optimizer disabled because it smashes R8 when running out of registers + // the disable is unconventionally here because the call is in common code shared by 5c/6c/8c + return; + firstr = R; lastr = R; nvar = 0; @@ -1147,7 +1151,7 @@ int32 RtoB(int r) { - if(r < 2 || r >= REGTMP) + if(r < 2 || r >= REGTMP-2) // excluded R9 and R10 for m and g return 0; return 1L << r; } @@ -1155,7 +1159,7 @@ RtoB(int r) int BtoR(int32 b) { - b &= 0x07fcL; + b &= 0x01fcL; // excluded R9 and R10 for m and g if(b == 0) return 0; return bitno(b); |