compiler: use gcWriteBarrier for pointer-shaped struct/array

If a struct/array is pointer-shaped (i.e. having a single field
that is pointer-shaped), we can use gcWriteBarrier instead of
typedmemmove for the write barrier.

Change-Id: Ic782ed35d8bf8df23e6c5487a78f83c420ff0659
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/181539
Reviewed-by: Ian Lance Taylor <iant@golang.org>
1 file changed