mirror of https://github.com/golang/go.git
cmd/5g: allow optimization of return registers.
Modeled after CL 7030046 by daniel.morsing.
example program:
func f(x int) int { x -= 10; return x }
5g -S difference:
--- prog list "f" ---
0011 (x.go:7) TEXT add+0(SB),$0-8
0012 (x.go:7) MOVW x+0(FP),R0
-0013 (x.go:7) SUB $10,R0,R2
-0014 (x.go:7) MOVW R2,R0
-0015 (x.go:7) MOVW R2,.noname+4(FP)
-0016 (x.go:7) RET ,
+0013 (x.go:7) SUB $10,R0
+0014 (x.go:7) MOVW R0,.noname+4(FP)
+0015 (x.go:7) RET ,
R=dave, rsc
CC=golang-dev
https://golang.org/cl/7030047
This commit is contained in:
parent
d5d4ee47ed
commit
bdd9f29780
|
|
@ -1160,12 +1160,9 @@ copyu(Prog *p, Adr *v, Adr *s)
|
|||
return 0;
|
||||
|
||||
case ARET: /* funny */
|
||||
if(v->type == D_REG)
|
||||
if(v->reg == REGRET)
|
||||
return 2;
|
||||
if(v->type == D_FREG)
|
||||
if(v->reg == FREGRET)
|
||||
return 2;
|
||||
if(s != A)
|
||||
return 1;
|
||||
return 3;
|
||||
|
||||
case ABL: /* funny */
|
||||
if(v->type == D_REG) {
|
||||
|
|
|
|||
Loading…
Reference in New Issue