6g code gen bug
R=rsc
https://golang.org/cl/166052
diff --git a/src/cmd/6g/ggen.c b/src/cmd/6g/ggen.c
index cf56148..5b42d0f 100644
--- a/src/cmd/6g/ggen.c
+++ b/src/cmd/6g/ggen.c
@@ -80,8 +80,9 @@
pc->as = ARET; // overwrite AEND
pc->lineno = lineno;
- if(!debug['N'] || debug['R'] || debug['P'])
+ if(!debug['N'] || debug['R'] || debug['P']) {
regopt(ptxt);
+ }
// fill in argument size
ptxt->to.offset = rnd(curfn->type->argwid, maxround);
diff --git a/src/cmd/8g/ggen.c b/src/cmd/8g/ggen.c
index 8ec8d9b..2e88372 100644
--- a/src/cmd/8g/ggen.c
+++ b/src/cmd/8g/ggen.c
@@ -80,7 +80,6 @@
pc->as = ARET; // overwrite AEND
pc->lineno = lineno;
-if(0)
if(!debug['N'] || debug['R'] || debug['P']) {
regopt(ptxt);
}
@@ -470,15 +469,10 @@
}
hard:
- if(nr->ullman > nl->ullman) {
- tempname(&n2, nr->type);
- cgen(nr, &n2);
- igen(nl, &n1, N);
- } else {
- igen(nl, &n1, N);
- tempname(&n2, nr->type);
- cgen(nr, &n2);
- }
+ tempname(&n2, nr->type);
+ cgen(nr, &n2);
+
+ igen(nl, &n1, N);
n3 = *n;
n3.left = &n1;