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
cgen(nl, &n1);
nodconst(&n2, types[tptr], 0);
- regalloc(&n3, n2.type, N);
- gmove(&n2, &n3);
- gcmp(optoas(OCMP, types[tptr]), &n1, &n3);
- regfree(&n3);
+ gcmp(optoas(OCMP, types[tptr]), &n1, &n2);
p1 = gbranch(optoas(OEQ, types[tptr]), T, -1);
n2 = n1;
cgen(nl, &n1);
nodconst(&n2, types[tptr], 0);
- regalloc(&n3, n2.type, N);
- gmove(&n2, &n3);
- gcmp(optoas(OCMP, types[tptr]), &n1, &n3);
- regfree(&n3);
+ gcmp(optoas(OCMP, types[tptr]), &n1, &n2);
p1 = gbranch(optoas(OEQ, types[tptr]), T, -1);
n2 = n1;