Home | History | Annotate | Download | only in fixedbugs
      1 // run
      2 
      3 // Copyright 2016 The Go Authors. All rights reserved.
      4 // Use of this source code is governed by a BSD-style
      5 // license that can be found in the LICENSE file.
      6 
      7 // Gccgo generated incorrect GC info when a global variable was
      8 // initialized to a slice of a value containing pointers.  The initial
      9 // backing array for the slice was allocated in the .data section,
     10 // which is fine, but the backing array was not registered as a GC
     11 // root.
     12 
     13 package main
     14 
     15 import (
     16 	"runtime"
     17 )
     18 
     19 type s struct {
     20 	str string
     21 }
     22 
     23 var a = []struct {
     24 	str string
     25 }{
     26 	{""},
     27 }
     28 
     29 var b = "b"
     30 var c = "c"
     31 
     32 func init() {
     33 	a[0].str = b + c
     34 }
     35 
     36 func main() {
     37 	runtime.GC()
     38 	if a[0].str != b + c {
     39 		panic(a[0].str)
     40 	}
     41 }
     42