// run

// Copyright 2014 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 for a garbage collection bug involving not
// marking x as having its address taken by &x[0]
// when x is an array value.

package main

import (
	"bytes"
	"fmt"
	"runtime"
)

func main() {
	var x = [4]struct{ x, y interface{} }{
		{"a", "b"},
		{"c", "d"},
		{"e", "f"},
		{"g", "h"},
	}

	var buf bytes.Buffer
	for _, z := range x {
		runtime.GC()
		fmt.Fprintf(&buf, "%s %s ", z.x.(string), z.y.(string))
	}

	if buf.String() != "a b c d e f g h " {
		println("BUG wrong output\n", buf.String())
	}
}
