// compile

// 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.

// CL 21202 introduced a compiler crash in the handling of a varargs
// function in the same recursive group as a function that calls it.
// Nothing in the standard library caught the problem, so adding a test.

package p

func F1(p *int, a ...*int) (int, *int) {
	if p == nil {
		return F2(), a[0]
	}
	return 0, a[0]
}

func F2() int {
	var i0, i1 int
	a, _ := F1(&i0, &i1)
	return a
}
