// run | |
// 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. | |
// Gccgo generated incorrect GC info when a global variable was | |
// initialized to a slice of a value containing pointers. The initial | |
// backing array for the slice was allocated in the .data section, | |
// which is fine, but the backing array was not registered as a GC | |
// root. | |
package main | |
import ( | |
"runtime" | |
) | |
type s struct { | |
str string | |
} | |
var a = []struct { | |
str string | |
}{ | |
{""}, | |
} | |
var b = "b" | |
var c = "c" | |
func init() { | |
a[0].str = b + c | |
} | |
func main() { | |
runtime.GC() | |
if a[0].str != b + c { | |
panic(a[0].str) | |
} | |
} |