compiler: check for notinheap struct at each struct field

When generating write barriers, we were only checking for a notinheap
struct at the outermost struct.  That mishandled the case of setting a
pointer to a notinheap struct as a field of another struct that is not
notinheap.  This caused an invalid write barrier error when building
the 1.13 version of the runtime.

Change-Id: Ib3ccb8d70fd46d81839372d6b43530994b4d2441
Reviewed-on: https://go-review.googlesource.com/c/gofrontend/+/192279
Reviewed-by: Cherry Zhang <cherryyz@google.com>
1 file changed