cmd/5g: avoid temporaries during gcmp(reg, constant)
Address several instances of unneeded temporaries when using gcmp.
func M(m map[int]bool) int {
return len(m)
}
--- prog list "M" ---
0000 (/home/dfc/src/map.go:3) TEXT M+0(SB),$0-8
0001 (/home/dfc/src/map.go:4) MOVW m+0(FP),R0
0002 (/home/dfc/src/map.go:4) MOVW $0,R1
0003 (/home/dfc/src/map.go:4) CMP R1,R0,
0004 (/home/dfc/src/map.go:4) BEQ ,6(APC)
0005 (/home/dfc/src/map.go:4) MOVW 0(R0),R0
0006 (/home/dfc/src/map.go:4) MOVW R0,.noname+4(FP)
0007 (/home/dfc/src/map.go:4) RET ,
after:
--- prog list "M" ---
0000 (/home/dfc/src/map.go:3) TEXT M+0(SB),$0-8
0001 (/home/dfc/src/map.go:4) MOVW m+0(FP),R0
0002 (/home/dfc/src/map.go:4) CMP $0,R0,
0003 (/home/dfc/src/map.go:4) BEQ ,5(APC)
0004 (/home/dfc/src/map.go:4) MOVW 0(R0),R0
0005 (/home/dfc/src/map.go:4) MOVW R0,.noname+4(FP)
0006 (/home/dfc/src/map.go:4) RET ,
func C(c chan int) int {
return cap(c)
}
--- prog list "C" ---
0000 (/home/dfc/src/map.go:3) TEXT C+0(SB),$0-8
0001 (/home/dfc/src/map.go:4) MOVW c+0(FP),R0
0002 (/home/dfc/src/map.go:4) MOVW $0,R1
0003 (/home/dfc/src/map.go:4) CMP R1,R0,
0004 (/home/dfc/src/map.go:4) BEQ ,6(APC)
0005 (/home/dfc/src/map.go:4) MOVW 4(R0),R0
0006 (/home/dfc/src/map.go:4) MOVW R0,.noname+4(FP)
0007 (/home/dfc/src/map.go:4) RET ,
after:
--- prog list "C" ---
0000 (/home/dfc/src/map.go:3) TEXT C+0(SB),$0-8
0001 (/home/dfc/src/map.go:4) MOVW c+0(FP),R0
0002 (/home/dfc/src/map.go:4) CMP $0,R0,
0003 (/home/dfc/src/map.go:4) BEQ ,5(APC)
0004 (/home/dfc/src/map.go:4) MOVW 4(R0),R0
0005 (/home/dfc/src/map.go:4) MOVW R0,.noname+4(FP)
0006 (/home/dfc/src/map.go:4) RET ,
R=rsc, minux.ma, remyoudompheng
CC=golang-dev
https://golang.org/cl/
6618054