1
0
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:
Shenghou Ma 2013-01-11 12:29:14 +08:00
parent d5d4ee47ed
commit bdd9f29780

View File

@ -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) {