• Clément Chigot's avatar
    cmd/compile: fix nilcheck for AIX · 9fe9853a
    Clément Chigot authored
    This commit adapts compile tool to create correct nilchecks for AIX.
    
    AIX allows to load a nil pointer. Therefore, the default nilcheck
    which issues a load must be replaced by a CMP instruction followed by a
    store at 0x0 if the value is nil. The store will trigger a SIGSEGV as on
    others OS.
    
    The nilcheck algorithm must be adapted to do not remove nilcheck if it's
    only a read. Stores are detected with v.Type.IsMemory().
    
    Tests related to nilptr must be adapted to the previous changements.
    nilptr.go cannot be used as it's because the AIX address space starts at
    1<<32.
    
    Change-Id: I9f5aaf0b7e185d736a9b119c0ed2fe4e5bd1e7af
    Reviewed-on: https://go-review.googlesource.com/c/144538
    Run-TryBot: Tobias Klauser <tobias.klauser@gmail.com>
    TryBot-Result: Gobot Gobot <gobot@golang.org>
    Reviewed-by: 's avatarKeith Randall <khr@golang.org>
    9fe9853a
nilcheck.go 9.21 KB