1
0
mirror of https://github.com/golang/go synced 2024-10-04 06:31:22 -06:00
go/src/cmd/8g
Russ Cox 948b2c722b cmd/gc: fix x=x crash
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
2014-05-28 19:50:19 -04:00
..
cgen64.c cmd/gc: contiguous loop layout 2012-05-30 18:07:39 -04:00
cgen.c cmd/gc: fix x=x crash 2014-05-28 19:50:19 -04:00
doc.go cmd/godoc: use go/build to determine package and example files 2013-02-19 11:19:58 -08:00
galign.c cmd/gc, cmd/5g, cmd/6g, cmd/8g: introduce linkarchinit and add amd64p32 support 2014-03-07 15:33:44 +11:00
gg.h 5g, 8g: remove dead code 2014-02-25 14:43:53 -08:00
ggen.c cmd/6g, cmd/8g: disable Duff's device on NaCl. 2014-04-04 08:42:35 +02:00
gobj.c cmd/gc: bypass DATA instruction for data initialized to integer constant 2013-12-20 14:24:39 -05:00
gsubr.c cmd/gc: alias more variables during register allocation 2014-05-12 17:10:36 -04:00
Makefile build: delete make paraphernalia 2012-02-06 13:34:25 -05:00
opt.h cmd/gc: fix liveness vs regopt mismatch for input variables 2014-05-12 17:19:02 -04:00
peep.c cmd/gc: shorten temporary lifetimes when possible 2014-04-01 13:31:38 -04:00
prog.c cmd/8g: fix liveness for 387 build (including plan9) 2014-04-06 10:30:02 -04:00
reg.c cmd/gc: correct handling of globals, func args, results 2014-05-15 15:34:53 -04:00