mirror of https://github.com/golang/go.git
[dev.cc] cmd/8g: work around "out of fixed registers" on Plan 9
This change works around the "out of fixed registers" issue with the Plan 9 C compiler on 386, introduced by the Bits change to uint64 in CL 169060043. The purpose of this CL is to be able to properly follow the conversion of the Plan 9 runtime to Go on the Plan 9 builders. This CL could be reverted once the Go compilers will be converted to Go. Thanks to Nick Owens for investigating this issue. LGTM=rsc R=rsc CC=austin, golang-codereviews, mischief https://golang.org/cl/177860043
This commit is contained in:
parent
2ceca80e3f
commit
7aa89ea798
|
|
@ -926,7 +926,7 @@ paint1(Reg *r, int bn)
|
|||
Reg *r1;
|
||||
Prog *p;
|
||||
int z;
|
||||
uint64 bb;
|
||||
uint64 bb, rbz;
|
||||
|
||||
z = bn/64;
|
||||
bb = 1LL<<(bn%64);
|
||||
|
|
@ -945,7 +945,8 @@ paint1(Reg *r, int bn)
|
|||
r = r1;
|
||||
}
|
||||
|
||||
if(LOAD(r) & ~(r->set.b[z]&~(r->use1.b[z]|r->use2.b[z])) & bb) {
|
||||
rbz = ~(r->set.b[z]&~(r->use1.b[z]|r->use2.b[z]));
|
||||
if(LOAD(r) & rbz & bb) {
|
||||
change -= CLOAD * r->f.loop;
|
||||
}
|
||||
for(;;) {
|
||||
|
|
@ -1053,7 +1054,7 @@ paint3(Reg *r, int bn, uint32 rb, int rn)
|
|||
Reg *r1;
|
||||
Prog *p;
|
||||
int z;
|
||||
uint64 bb;
|
||||
uint64 bb, rbz;
|
||||
|
||||
z = bn/64;
|
||||
bb = 1LL << (bn%64);
|
||||
|
|
@ -1072,7 +1073,8 @@ paint3(Reg *r, int bn, uint32 rb, int rn)
|
|||
r = r1;
|
||||
}
|
||||
|
||||
if(LOAD(r) & ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z])) & bb)
|
||||
rbz = ~(r->set.b[z] & ~(r->use1.b[z]|r->use2.b[z]));
|
||||
if(LOAD(r) & rbz & bb)
|
||||
addmove(r, bn, rn, 0);
|
||||
for(;;) {
|
||||
r->act.b[z] |= bb;
|
||||
|
|
|
|||
Loading…
Reference in New Issue