// run

// Copyright 2011 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

func main() {
	c := make(chan int, 1)
	dummy := make(chan int)
	v := 0x12345678
	for i := 0; i < 10; i++ {
		// 6g had a bug that caused select to pass &t to
		// selectrecv before allocating the memory for t,
		// which caused non-deterministic crashes.
		// This test looks for the bug by checking that the
		// value received actually ends up in t.
		// If the allocation happens after storing through
		// whatever garbage &t holds, the later reference
		// to t in the case body will use the new pointer and
		// not see the received value.
		v += 0x1020304
		c <- v
		select {
		case t := <-c:
			go func() {
				f(t)
			}()
			escape(&t)
			if t != v {
				println(i, v, t)
				panic("wrong values")
			}
		case dummy <- 1:
		}
	}
}

func escape(*int) {
}

func f(int) {
}

