Descriptioncmd/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 issue 8097. Patch Set 1 #Patch Set 2 : diff -r 900650e66b4f https://code.google.com/p/go/ #Patch Set 3 : diff -r 900650e66b4f https://code.google.com/p/go/ #Patch Set 4 : diff -r f39e79378a3b https://code.google.com/p/go/ #
MessagesTotal messages: 8 | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||