mirror of
https://github.com/golang/go
synced 2024-11-20 04:44:40 -07:00
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
Block a user