• Dave Cheney's avatar
    cmd/5g: avoid temporary during constant asop · bbccfddb
    Dave Cheney authored
    func add() int {
            var a int
            a += 10
            a += 20
            a += 30
            a -= 10
            a -= 20
            a -= 30
            return a
    }
    
    before
    
    --- prog list "add" ---
    0000 (/home/dfc/src/add.go:5) TEXT      add+0(SB),$0-4
    0001 (/home/dfc/src/add.go:6) MOVW      $0,R2
    0002 (/home/dfc/src/add.go:7) MOVW      $10,R0
    0003 (/home/dfc/src/add.go:7) ADD       R0,R2,R1
    0004 (/home/dfc/src/add.go:8) MOVW      $20,R0
    0005 (/home/dfc/src/add.go:8) ADD       R0,R1
    0006 (/home/dfc/src/add.go:9) MOVW      $30,R0
    0007 (/home/dfc/src/add.go:9) ADD       R0,R1
    0008 (/home/dfc/src/add.go:10) MOVW     $10,R0
    0009 (/home/dfc/src/add.go:10) SUB      R0,R1
    0010 (/home/dfc/src/add.go:11) MOVW     $20,R0
    0011 (/home/dfc/src/add.go:11) SUB      R0,R1
    0012 (/home/dfc/src/add.go:12) MOVW     $30,R0
    0013 (/home/dfc/src/add.go:12) SUB      R0,R1,R2
    0014 (/home/dfc/src/add.go:12) MOVW     R2,R0
    0015 (/home/dfc/src/add.go:13) MOVW     R2,R1
    0016 (/home/dfc/src/add.go:13) MOVW     R2,.noname+0(FP)
    0017 (/home/dfc/src/add.go:13) RET      ,
    
    after
    
    --- prog list "add" ---
    0000 (/home/dfc/src/add.go:5) TEXT      add+0(SB),$0-4
    0001 (/home/dfc/src/add.go:6) MOVW      $0,R0
    0002 (/home/dfc/src/add.go:7) ADD       $10,R0
    0003 (/home/dfc/src/add.go:8) ADD       $20,R0
    0004 (/home/dfc/src/add.go:9) ADD       $30,R0
    0005 (/home/dfc/src/add.go:10) SUB      $10,R0
    0006 (/home/dfc/src/add.go:11) SUB      $20,R0
    0007 (/home/dfc/src/add.go:12) SUB      $30,R0,R2
    0008 (/home/dfc/src/add.go:13) MOVW     R2,R0
    0009 (/home/dfc/src/add.go:13) MOVW     R2,.noname+0(FP)
    0010 (/home/dfc/src/add.go:13) RET      ,
    
    R=rsc, minux.ma, remyoudompheng
    CC=golang-dev
    https://golang.org/cl/6584056
    bbccfddb
Name
Last commit
Last update
..
5a Loading commit data...
5c Loading commit data...
5g Loading commit data...
5l Loading commit data...
6a Loading commit data...
6c Loading commit data...
6g Loading commit data...
6l Loading commit data...
8a Loading commit data...
8c Loading commit data...
8g Loading commit data...
8l Loading commit data...
addr2line Loading commit data...
api Loading commit data...
cc Loading commit data...
cgo Loading commit data...
cov Loading commit data...
dist Loading commit data...
fix Loading commit data...
gc Loading commit data...
go Loading commit data...
godoc Loading commit data...
gofmt Loading commit data...
ld Loading commit data...
nm Loading commit data...
objdump Loading commit data...
pack Loading commit data...
prof Loading commit data...
vet Loading commit data...
yacc Loading commit data...