// errorcheck -+ -0 -l -d=wb

// Copyright 2016 The Go Authors. All rights reserved.
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.

// Test write barrier elimination for notinheap.

//go:build cgo

package p

import "runtime/cgo"

type t1 struct {
	x *nih
	s []nih
	y [1024]byte // Prevent write decomposition
}

type t2 struct {
	x *ih
	s []ih
	y [1024]byte
}

type nih struct {
	_ cgo.Incomplete
	x uintptr
}

type ih struct { // In-heap type
	x uintptr
}

var (
	v1 t1
	v2 t2

	v1s []t1
	v2s []t2
)

func f() {
	// Test direct writes
	v1.x = nil        // no barrier
	v2.x = nil        // ERROR "write barrier"
	v1.s = []nih(nil) // no barrier
	v2.s = []ih(nil)  // ERROR "write barrier"
}

func g() {
	// Test aggregate writes
	v1 = t1{x: nil} // no barrier
	v2 = t2{x: nil} // ERROR "write barrier"
}

func h() {
	// Test copies and appends.
	copy(v1s, v1s[1:])      // no barrier
	copy(v2s, v2s[1:])      // ERROR "write barrier"
	_ = append(v1s, v1s...) // no barrier
	_ = append(v2s, v2s...) // ERROR "write barrier"
}

// Slice clearing

var (
	sliceIH  []*ih
	sliceNIH []*nih
)

func sliceClear() {
	for i := range sliceIH {
		sliceIH[i] = nil // ERROR "write barrier"
	}
	for i := range sliceNIH {
		sliceNIH[i] = nil // no barrier
	}
}
