• Russ Cox's avatar
    cmd/gc: fix x=x crash · 948b2c72
    Russ Cox authored
    The 'nodarg' function is used to obtain a Node*
    representing a function argument or result.
    It returned a brand new Node*, but that violates
    the guarantee in most places in the compiler that
    two Node*s refer to the same variable if and only if
    they are the same Node* pointer. Reestablish that
    invariant by making nodarg return a preexisting
    named variable if present.
    
    Having fixed that, avoid any copy during x=x in
    componentgen, because the VARDEF we emit
    before the copy marks the lhs x as dead incorrectly.
    
    The change in walk.c avoids modifying the result
    of nodarg. This was the only place in the compiler
    that did so.
    
    Fixes #8097.
    
    LGTM=r, khr
    R=golang-codereviews, r, khr
    CC=golang-codereviews, iant
    https://golang.org/cl/102820043
    948b2c72
Name
Last commit
Last update
..
Makefile Loading commit data...
cgen.c Loading commit data...
cgen64.c Loading commit data...
doc.go Loading commit data...
galign.c Loading commit data...
gg.h Loading commit data...
ggen.c Loading commit data...
gobj.c Loading commit data...
gsubr.c Loading commit data...
opt.h Loading commit data...
peep.c Loading commit data...
prog.c Loading commit data...
reg.c Loading commit data...