summaryrefslogtreecommitdiff
path: root/api
diff options
context:
space:
mode:
authorRuss Cox <rsc@golang.org>2014-05-15 19:16:18 -0400
committerRuss Cox <rsc@golang.org>2014-05-15 19:16:18 -0400
commita19d3398897ce3fe8f99b7c57c6ff9d8f04faec5 (patch)
tree688f6b993f4a6fd50afc379ef4d449f2edd5bfc0 /api
parent77bbbafc573d1b0d36333735529031c7e5691aa8 (diff)
downloadgo-a19d3398897ce3fe8f99b7c57c6ff9d8f04faec5.tar.gz
cmd/gc: fix two select temporary bugs
The introduction of temporaries in order.c was not quite right for two corner cases: 1) The rewrite that pushed new variables on the lhs of a receive into the body of the case was dropping the declaration of the variables. If the variables escape, the declaration is what allocates them. Caught by escape analysis sanity check. In fact the declarations should move into the body always, so that we only allocate if the corresponding case is selected. Do that. (This is an optimization that was already present in Go 1.2. The new order code just made it stop working.) Fixes issue 7997. 2) The optimization to turn a single-recv select into an ordinary receive assumed it could take the address of the destination; not so if the destination is _. Fixes issue 7998. LGTM=iant R=golang-codereviews, iant CC=golang-codereviews https://codereview.appspot.com/100480043
Diffstat (limited to 'api')
0 files changed, 0 insertions, 0 deletions