| // 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. |
| y [1024]byte // Prevent write decomposition |
| type ih struct { // In-heap type |
| v2.x = nil // ERROR "write barrier" |
| v1.s = []nih(nil) // no barrier |
| v2.s = []ih(nil) // ERROR "write barrier" |
| v1 = t1{x: nil} // no barrier |
| v2 = t2{x: nil} // ERROR "write barrier" |
| // 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" |
| sliceIH[i] = nil // ERROR "write barrier" |
| for i := range sliceNIH { |
| sliceNIH[i] = nil // no barrier |