compiler: add slice initializers to the GC root list
authorIan Lance Taylor <ian@gcc.gnu.org>
Thu, 1 Dec 2016 19:54:36 +0000 (19:54 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Thu, 1 Dec 2016 19:54:36 +0000 (19:54 +0000)
commit98934fac3bd8fd149387164ac3ee97795a5e6825
tree02dada663e5216cc65990a964cf7659d5178e50a
parent0269650d4a53dfdde90e90db701ee6233a61f837
compiler: add slice initializers to the GC root list

    As of https://golang.org/cl/32917 we can put slice initializers in the
    .data section.  The program can still change the values in those
    slices.  That means that if the slice elements can contain pointers,
    we need to register the entire initializer as a GC root.

    This would be straightforward except that we only have a Bexpression
    for the slice initializer, not an Expression.  So introduce a
    Backend_expression type that wraps a Bexpression as an Expression.

    The test case for this is https://golang.org/cl/33790.

    Reviewed-on: https://go-review.googlesource.com/33792

From-SVN: r243129
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc
gcc/go/gofrontend/expressions.h
gcc/go/gofrontend/gogo.cc
gcc/go/gofrontend/gogo.h