summaryrefslogtreecommitdiff
path: root/src/cmd/5g/reg.c
diff options
context:
space:
mode:
authorOndřej Surý <ondrej@sury.org>2011-02-18 09:50:58 +0100
committerOndřej Surý <ondrej@sury.org>2011-02-18 09:50:58 +0100
commitc072558b90f1bbedc2022b0f30c8b1ac4712538e (patch)
tree67767591619e4bd8111fb05fac185cde94fb7378 /src/cmd/5g/reg.c
parent5859517b767c99749a45651c15d4bae5520ebae8 (diff)
downloadgolang-upstream/2011.02.15.tar.gz
Imported Upstream version 2011.02.15upstream/2011.02.15
Diffstat (limited to 'src/cmd/5g/reg.c')
-rw-r--r--src/cmd/5g/reg.c72
1 files changed, 70 insertions, 2 deletions
diff --git a/src/cmd/5g/reg.c b/src/cmd/5g/reg.c
index eaf02b237..f31f70535 100644
--- a/src/cmd/5g/reg.c
+++ b/src/cmd/5g/reg.c
@@ -140,8 +140,8 @@ regopt(Prog *firstp)
if(first == 0) {
fmtinstall('Q', Qconv);
}
- first++;
+ first++;
if(debug['K']) {
if(first != 13)
return;
@@ -491,7 +491,7 @@ brk:
* peep-hole on basic block
*/
if(!debug['R'] || debug['P']) {
-// peep();
+ peep();
}
/*
@@ -1375,3 +1375,71 @@ noreturn(Prog *p)
return 1;
return 0;
}
+
+void
+dumpone(Reg *r)
+{
+ int z;
+ Bits bit;
+
+ print("%d:%P", r->loop, r->prog);
+ for(z=0; z<BITS; z++)
+ bit.b[z] =
+ r->set.b[z] |
+ r->use1.b[z] |
+ r->use2.b[z] |
+ r->refbehind.b[z] |
+ r->refahead.b[z] |
+ r->calbehind.b[z] |
+ r->calahead.b[z] |
+ r->regdiff.b[z] |
+ r->act.b[z] |
+ 0;
+// if(bany(&bit)) {
+// print("\t");
+// if(bany(&r->set))
+// print(" s:%Q", r->set);
+// if(bany(&r->use1))
+// print(" u1:%Q", r->use1);
+// if(bany(&r->use2))
+// print(" u2:%Q", r->use2);
+// if(bany(&r->refbehind))
+// print(" rb:%Q ", r->refbehind);
+// if(bany(&r->refahead))
+// print(" ra:%Q ", r->refahead);
+// if(bany(&r->calbehind))
+// print("cb:%Q ", r->calbehind);
+// if(bany(&r->calahead))
+// print(" ca:%Q ", r->calahead);
+// if(bany(&r->regdiff))
+// print(" d:%Q ", r->regdiff);
+// if(bany(&r->act))
+// print(" a:%Q ", r->act);
+// }
+ print("\n");
+}
+
+void
+dumpit(char *str, Reg *r0)
+{
+ Reg *r, *r1;
+
+ print("\n%s\n", str);
+ for(r = r0; r != R; r = r->link) {
+ dumpone(r);
+ r1 = r->p2;
+ if(r1 != R) {
+ print(" pred:");
+ for(; r1 != R; r1 = r1->p2link)
+ print(" %.4ud", r1->prog->loc);
+ print("\n");
+ }
+// r1 = r->s1;
+// if(r1 != R) {
+// print(" succ:");
+// for(; r1 != R; r1 = r1->s1)
+// print(" %.4ud", r1->prog->loc);
+// print("\n");
+// }
+ }
+}