• Michael Munday's avatar
    cmd/compile: stop rematerializable ops from clobbering flags · 2cb61aa3
    Michael Munday authored
    Rematerializable ops can be inserted after the flagalloc phase,
    they must therefore not clobber flags. This CL adds a check to
    ensure this doesn't happen and fixes the instances where it
    does currently.
    
    amd64: ADDQconst and ADDLconst were recently changed to be
    rematerializable in CL 54393 (only in tip, not 1.9). That change
    has been reverted.
    
    s390x: MOVDaddr could clobber flags when using dynamic linking due
    to a ADD with immediate instruction. Change the code generation to
    use LA/LAY instead.
    
    Fixes #21080.
    
    Change-Id: Ia85c882afa2a820a309e93775354b3169ec6d034
    Reviewed-on: https://go-review.googlesource.com/63030
    Run-TryBot: Michael Munday <mike.munday@ibm.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: default avatarCherry Zhang <cherryyz@google.com>
    Reviewed-by: default avatarIlya Tocar <ilya.tocar@intel.com>
    2cb61aa3
AMD64Ops.go 47.6 KB