compiler: add go:notinheap magic comment
authorIan Lance Taylor <ian@gcc.gnu.org>
Fri, 23 Jun 2017 16:03:49 +0000 (16:03 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Fri, 23 Jun 2017 16:03:49 +0000 (16:03 +0000)
commit5f0b897b2ee47bf3845d924dd5bc3beb949bc78b
tree3f8b464d9ac9de6affa319ea9639ee19ef983302
parentef2361cbd8462374b28e9e8becf8710a9b30d125
compiler: add go:notinheap magic comment

    Implement go:notinheap as the gc compiler does. A type marked as
    go:notinheap may not live in the heap, and does not require a write
    barrier. Struct and array types that incorporate notinheap types are
    themselves notinheap. Allocating a value of a notinheap type on the
    heap is an error.

    This is not just an optimization. There is code where a write barrier
    may not occur that was getting a write barrier with gccgo but not gc,
    because the types in question were notinheap. The case I found was
    setting the mcache field in exitsyscallfast.

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

From-SVN: r249594
gcc/go/gofrontend/MERGE
gcc/go/gofrontend/expressions.cc
gcc/go/gofrontend/expressions.h
gcc/go/gofrontend/lex.cc
gcc/go/gofrontend/lex.h
gcc/go/gofrontend/parse.cc
gcc/go/gofrontend/parse.h
gcc/go/gofrontend/types.cc
gcc/go/gofrontend/types.h
gcc/go/gofrontend/wb.cc