/
githubmirror
/
go
Обзор
Документация
Войти
/
githubmirror
/
go
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
test/fixedbugs/issue43570.go
40 строк
661 B
Keith Randall
cmd/compile: don't short-circuit copies whose source is volatile
08 янв 2021, 08:00
08 янв 2021, 08:00
304f769
Код
Авторство
О чём код?
// run // Copyright 2021 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. package main import "fmt" type T [8]*int //go:noinline func f(x int) T { return T{} } //go:noinline func g(x int, t T) { if t != (T{}) { panic(fmt.Sprintf("bad: %v", t)) } } func main() { const N = 10000 var q T func() { for i := 0; i < N; i++ { q = f(0) g(0, q) sink = make([]byte, 1024) } }() // Note that the closure is a trick to get the write to q to be a // write to a pointer that is known to be non-nil and requires // a write barrier. } var sink []byte