• Dave Cheney's avatar
    cmd/5g: avoid temporary during constant OINDEX · ed0c5dd1
    Dave Cheney authored
    func addr(s[]int) *int {
    	return &s[2]
    }
    
    --- prog list "addr" ---
    0000 (/home/dfc/src/addr.go:5) TEXT     addr+0(SB),$0-16
    0001 (/home/dfc/src/addr.go:6) MOVW     $s+0(FP),R0
    0002 (/home/dfc/src/addr.go:6) MOVW     4(R0),R1
    0003 (/home/dfc/src/addr.go:6) MOVW     $2,R2
    0004 (/home/dfc/src/addr.go:6) CMP      R2,R1,
    0005 (/home/dfc/src/addr.go:6) BHI      ,7(APC)
    0006 (/home/dfc/src/addr.go:6) BL       ,runtime.panicindex+0(SB)
    0007 (/home/dfc/src/addr.go:6) MOVW     0(R0),R0
    0008 (/home/dfc/src/addr.go:6) MOVW     $8,R1
    0009 (/home/dfc/src/addr.go:6) ADD      R1,R0
    0010 (/home/dfc/src/addr.go:6) MOVW     R0,.noname+12(FP)
    0011 (/home/dfc/src/addr.go:6) RET      ,
    
    becomes
    
    --- prog list "addr" ---
    0000 (/home/dfc/src/addr.go:5) TEXT     addr+0(SB),$0-16
    0001 (/home/dfc/src/addr.go:6) MOVW     $s+0(FP),R0
    0002 (/home/dfc/src/addr.go:6) MOVW     4(R0),R1
    0003 (/home/dfc/src/addr.go:6) MOVW     $2,R2
    0004 (/home/dfc/src/addr.go:6) CMP      R2,R1,
    0005 (/home/dfc/src/addr.go:6) BHI      ,7(APC)
    0006 (/home/dfc/src/addr.go:6) BL       ,runtime.panicindex+0(SB)
    0007 (/home/dfc/src/addr.go:6) MOVW     0(R0),R0
    0008 (/home/dfc/src/addr.go:6) ADD      $8,R0
    0009 (/home/dfc/src/addr.go:6) MOVW     R0,.noname+12(FP)
    0010 (/home/dfc/src/addr.go:6) RET      ,
    
    R=rsc, remyoudompheng, minux.ma
    CC=golang-dev
    https://golang.org/cl/6590056
    ed0c5dd1
cgen.c 27.9 KB