]> Cypherpunks repositories - gostls13.git/commit
cmd/gc: racewalk: do not double function calls
authorDmitriy Vyukov <dvyukov@google.com>
Wed, 7 Nov 2012 08:06:27 +0000 (12:06 +0400)
committerDmitriy Vyukov <dvyukov@google.com>
Wed, 7 Nov 2012 08:06:27 +0000 (12:06 +0400)
commitabb313f8c8980ed69d4618823d9f4a05c7acff9d
treebcdb5b9e4fa020c384675b30456b336e32a7dbdd
parent703043c8dcfdbf1d6b3fd5bea539da7392adce39
cmd/gc: racewalk: do not double function calls
Current racewalk transformation looks like:
x := <-makeChan().c
\/\/\/\/\/\/\/\/\/
runtime.raceread(&makeChan().c)
x := <-makeChan().c
and so makeChan() is called twice.
With this CL the transformation looks like:
x := <-makeChan().c
\/\/\/\/\/\/\/\/\/
chan *tmp = &(makeChan().c)
raceread(&*tmp)
x := <-(*tmp)
Fixes #4245.

R=golang-dev, rsc
CC=golang-dev
https://golang.org/cl/6822075
src/cmd/gc/racewalk.c