• Russ Cox's avatar
    cmd/gc: distinguish unnamed vs blank-named return variables better · a069cf04
    Russ Cox authored
    Before, an unnamed return value turned into an ONAME node n with n->sym
    named ~anon%d, and n->orig == n.
    
    A blank-named return value turned into an ONAME node n with n->sym
    named ~anon%d but n->orig == the original blank n. Code generation and
    printing uses n->orig, so that this node formatted as _.
    
    But some code does not use n->orig. In particular the liveness code does
    not know about the n->orig convention and so mishandles blank identifiers.
    It is possible to fix but seemed better to avoid the confusion entirely.
    
    Now the first kind of node is named ~r%d and the second ~b%d; both have
    n->orig == n, so that it doesn't matter whether code uses n or n->orig.
    
    After this change the ->orig field is only used for other kinds of expressions,
    not for ONAME nodes.
    
    This requires distinguishing ~b from ~r names in a few places that care.
    It fixes a liveness analysis bug without actually changing the liveness code.
    
    TBR=ken2
    CC=golang-codereviews
    https://golang.org/cl/63630043
    a069cf04
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...