• Cherry Zhang's avatar
    cmd/compile: on Wasm and AIX, let deferred nil function panic at invocation · c4817f5d
    Cherry Zhang authored
    The Go spec requires
    
    	If a deferred function value evaluates to nil, execution
    	panics when the function is invoked, not when the "defer"
    	statement is executed.
    
    On Wasm and AIX, currently we actually emit a nil check at the
    point of defer statement, which will make it panic too early.
    This CL fixes this.
    
    Also, on Wasm, now the nil function will be passed through
    deferreturn to jmpdefer, which does an explicit nil check and
    calls sigpanic if it is nil. This sigpanic, being called from
    assembly, is ABI0. So change the assembler backend to also
    handle sigpanic in ABI0.
    
    Fixes #34926.
    Updates #8047.
    
    Change-Id: I28489a571cee36d2aef041f917b8cfdc31d557d4
    Reviewed-on: https://go-review.googlesource.com/c/go/+/201297Reviewed-by: default avatarBrad Fitzpatrick <bradfitz@golang.org>
    c4817f5d
defernil.go 563 Bytes