]> Cypherpunks repositories - gostls13.git/commit
cmd/compile: in escape analysis, propagate loop depth to field
authorCherry Zhang <cherryyz@google.com>
Fri, 6 Apr 2018 20:21:26 +0000 (16:21 -0400)
committerCherry Zhang <cherryyz@google.com>
Fri, 13 Apr 2018 14:48:23 +0000 (14:48 +0000)
commit5a91c83ce82509551d353b1b5ea25cd72b44fec3
treeed1806673f2c6d98847dbb89aa0c7d2cfc45f1c5
parenteb4f33243ece5874d2690c4b9bc72cb47f8da772
cmd/compile: in escape analysis, propagate loop depth to field

The escape analysis models "loop depth". If the address of an
expression is assigned to something defined at a lower (outer)
loop depth, the escape analysis decides it escapes. However, it
uses the loop depth of the address operator instead of where
the RHS is defined. This causes an unnecessary escape if there is
an assignment inside a loop but the RHS is defined outside the
loop. This CL propagates the loop depth.

Fixes #24730.

Change-Id: I5ff1530688bdfd90561a7b39c8be9bfc009a9dae
Reviewed-on: https://go-review.googlesource.com/105257
Run-TryBot: Cherry Zhang <cherryyz@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: David Chase <drchase@google.com>
src/cmd/compile/internal/gc/esc.go
test/escape5.go