• Keith Randall's avatar
    cmd/compile: don't merge load+op if other op arg is still live · 86dc86b4
    Keith Randall authored
    We want to merge a load and op into a single instruction
    
        l = LOAD ptr mem
        y = OP x l
    
    into
    
        y = OPload x ptr mem
    
    However, all of our OPload instructions require that y uses
    the same register as x. If x is needed past this instruction, then
    we must copy x somewhere else, losing the whole benefit of merging
    the instructions in the first place.
    
    Disable this optimization if x is live past the OP.
    
    Also disable this optimization if the OP is in a deeper loop than the load.
    
    Update #19595
    
    Change-Id: I87f596aad7e91c9127bfb4705cbae47106e1e77a
    Reviewed-on: https://go-review.googlesource.com/38337Reviewed-by: 's avatarIlya Tocar <ilya.tocar@intel.com>
    86dc86b4
rewrite.go 13.6 KB