compiler: fix loopdepth tracking in array slicing expression in escape analysis
authorIan Lance Taylor <ian@gcc.gnu.org>
Wed, 8 Jan 2020 00:38:00 +0000 (00:38 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Wed, 8 Jan 2020 00:38:00 +0000 (00:38 +0000)
commitfc6dbd584b4aa5c93ddaf52a62d4293a5e497a90
tree35b3eff5e5a9e26e79ab8b26d37dcd86a678122b
parentfd9ca4c64676a0fac332092285cb78918a2cdb11
compiler: fix loopdepth tracking in array slicing expression in escape analysis

    In the gc compiler, for slicing an array, its AST has an implicit
    address operation node. There isn't such node in the gofrontend
    AST. During the escape analysis, we create a fake node to mimic
    the gc compiler's behavior. For the fake node, the loopdepth was
    not tracked correctly, causing miscompilation. Since this is an
    address operation, do the same thing as we do for the address
    operator.

    Fixes golang/go#36404.

    Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/213643

From-SVN: r279984
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/escape.cc