summaryrefslogtreecommitdiff
path: root/src/cmd/5g/reg.c
diff options
context:
space:
mode:
authorDave Cheney <dave@cheney.net>2012-12-14 06:20:24 +1100
committerDave Cheney <dave@cheney.net>2012-12-14 06:20:24 +1100
commita99e71c5e164e2a048db444f5b9285012342af57 (patch)
tree44d0ba77ef0483d4f1a8b6d897a05a2f3373b703 /src/cmd/5g/reg.c
parent4220db503468dd7751a676117b03829a9f683953 (diff)
downloadgo-a99e71c5e164e2a048db444f5b9285012342af57.tar.gz
cmd/{5,6,8}g: reduce size of Prog and Addr
5g: Prog went from 128 bytes to 88 bytes 6g: Prog went from 174 bytes to 144 bytes 8g: Prog went from 124 bytes to 92 bytes There may be a little more that can be squeezed out of Addr, but alignment will be a factor. All: remove the unused pun field from Addr R=rsc, minux.ma CC=golang-dev https://codereview.appspot.com/6922048
Diffstat (limited to 'src/cmd/5g/reg.c')
-rw-r--r--src/cmd/5g/reg.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/src/cmd/5g/reg.c b/src/cmd/5g/reg.c
index 100cff2de..14cda5148 100644
--- a/src/cmd/5g/reg.c
+++ b/src/cmd/5g/reg.c
@@ -437,9 +437,9 @@ regopt(Prog *firstp)
for(r=firstr; r!=R; r=r->link) {
p = r->prog;
if(p->to.type == D_BRANCH) {
- if(p->to.branch == P)
+ if(p->to.u.branch == P)
fatal("pnil %P", p);
- r1 = p->to.branch->regp;
+ r1 = p->to.u.branch->regp;
if(r1 == R)
fatal("rnil %P", p);
if(r1 == r) {
@@ -704,8 +704,8 @@ brk:
while(p->link != P && p->link->as == ANOP)
p->link = p->link->link;
if(p->to.type == D_BRANCH)
- while(p->to.branch != P && p->to.branch->as == ANOP)
- p->to.branch = p->to.branch->link;
+ while(p->to.u.branch != P && p->to.u.branch->as == ANOP)
+ p->to.u.branch = p->to.u.branch->link;
if(p->as == AMOVW && p->to.reg == 13) {
if(p->scond & C_WBIT) {
vreg = -p->to.offset; // in adjust region
@@ -1687,7 +1687,7 @@ chasejmp(Prog *p, int *jmploop)
*jmploop = 1;
break;
}
- p = p->to.branch;
+ p = p->to.u.branch;
}
return p;
}
@@ -1709,8 +1709,8 @@ mark(Prog *firstp)
if(p->regp != dead)
break;
p->regp = alive;
- if(p->as != ABL && p->to.type == D_BRANCH && p->to.branch)
- mark(p->to.branch);
+ if(p->as != ABL && p->to.type == D_BRANCH && p->to.u.branch)
+ mark(p->to.u.branch);
if(p->as == AB || p->as == ARET || (p->as == ABL && noreturn(p)))
break;
}
@@ -1730,8 +1730,8 @@ fixjmp(Prog *firstp)
for(p=firstp; p; p=p->link) {
if(debug['R'] && debug['v'])
print("%P\n", p);
- if(p->as != ABL && p->to.type == D_BRANCH && p->to.branch && p->to.branch->as == AB) {
- p->to.branch = chasejmp(p->to.branch, &jmploop);
+ if(p->as != ABL && p->to.type == D_BRANCH && p->to.u.branch && p->to.u.branch->as == AB) {
+ p->to.u.branch = chasejmp(p->to.u.branch, &jmploop);
if(debug['R'] && debug['v'])
print("->%P\n", p);
}
@@ -1767,7 +1767,7 @@ fixjmp(Prog *firstp)
if(!jmploop) {
last = nil;
for(p=firstp; p; p=p->link) {
- if(p->as == AB && p->to.type == D_BRANCH && p->to.branch == p->link) {
+ if(p->as == AB && p->to.type == D_BRANCH && p->to.u.branch == p->link) {
if(debug['R'] && debug['v'])
print("del %P\n", p);
continue;