• 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
api Loading commit data...
doc Loading commit data...
include Loading commit data...
lib Loading commit data...
misc Loading commit data...
src Loading commit data...
test Loading commit data...
.hgignore Loading commit data...
.hgtags Loading commit data...
AUTHORS Loading commit data...
CONTRIBUTORS Loading commit data...
LICENSE Loading commit data...
PATENTS Loading commit data...
README Loading commit data...
favicon.ico Loading commit data...
robots.txt Loading commit data...