cmd/gc: silence valgrind error

valgrind complained that under some circumstances,

    *nr = *nc

was being called when nr and nc were the same *Node. The suggestion my Rémy was to introduce a tmp node to avoid the potential for aliasing in subnode.

R=remyoudompheng, minux.ma, rsc
CC=golang-dev
https://golang.org/cl/7780044
This commit is contained in:
Dave Cheney 2013-03-13 16:12:38 -04:00
parent 4e63d6ee4d
commit 8883c484cf
1 changed files with 4 additions and 4 deletions

View File

@ -36,7 +36,7 @@ void
complexmove(Node *f, Node *t)
{
int ft, tt;
Node n1, n2, n3, n4;
Node n1, n2, n3, n4, tmp;
if(debug['g']) {
dump("\ncomplexmove-f", f);
@ -62,9 +62,9 @@ complexmove(Node *f, Node *t)
// make f addable.
// also use temporary if possible stack overlap.
if(!f->addable || overlap(f, t)) {
tempname(&n1, f->type);
complexmove(f, &n1);
f = &n1;
tempname(&tmp, f->type);
complexmove(f, &tmp);
f = &tmp;
}
subnode(&n1, &n2, f);