Same as CL 421880, but for test directory.
Updates #46731
Change-Id: If8d18df013a6833adcbd40acc1a721bbc23ca6b2
Reviewed-on: https://go-review.googlesource.com/c/go/+/421881
Reviewed-by: Keith Randall <khr@golang.org>
Reviewed-by: Heschi Kreinick <heschi@google.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Keith Randall <khr@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:build cgo
+
package main
+import "runtime/cgo"
+
type iface interface {
Get() int
}
-//go:notinheap
type notInHeap struct {
+ _ cgo.Incomplete
i int
}
var val = 1234
-var valNotInHeap = notInHeap{val}
+var valNotInHeap = notInHeap{i: val}
func main() {
i := val
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:build cgo
+
package main
import (
+ "runtime/cgo"
"unsafe"
)
-//go:notinheap
-type S struct{ x int }
+type S struct {
+ _ cgo.Incomplete
+ x int
+}
func main() {
var i int
p := (*S)(unsafe.Pointer(uintptr(unsafe.Pointer(&i))))
v := uintptr(unsafe.Pointer(p))
- // p is a pointer to a go:notinheap type. Like some C libraries,
+ // p is a pointer to a not-in-heap type. Like some C libraries,
// we stored an integer in that pointer. That integer just happens
// to be the address of i.
// v is also the address of i.
- // p has a base type which is marked go:notinheap, so it
+ // p has a base type which is marked not-in-heap, so it
// should not be adjusted when the stack is copied.
recurse(100, p, v)
}
// source code is governed by a BSD-style license that can be found in
// the LICENSE file.
+//go:build cgo
+
package main
-//go:notinheap
+import "runtime/cgo"
+
type NIH struct {
+ _ cgo.Incomplete
}
type T struct {
// source code is governed by a BSD-style license that can be found in
// the LICENSE file.
+//go:build cgo
+
package main
-import "reflect"
+import (
+ "reflect"
+ "runtime/cgo"
+)
-//go:notinheap
type NIH struct {
+ _ cgo.Incomplete
}
var x, y NIH
// run
-//go:build goexperiment.unified
-// +build goexperiment.unified
+//go:build goexperiment.unified && cgo
+// +build goexperiment.unified,cgo
// TODO(mdempsky): Enable test unconditionally. This test should pass
// for non-unified mode too.
package main
-//go:notinheap
-type A struct{ B }
+import "runtime/cgo"
+
+type A struct {
+ B
+ _ cgo.Incomplete
+}
type B struct{ x byte }
type I interface{ M() *B }
// Use of this source code is governed by a BSD-style
// license that can be found in the LICENSE file.
+//go:build cgo
+
package main
import (
"log"
+ "runtime/cgo"
"unsafe"
)
-//go:notinheap
-type S struct{}
+type S struct{ _ cgo.Incomplete }
func main() {
p := (*S)(unsafe.Pointer(uintptr(0x8000)))