// run

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

import (
	"fmt"
	"os"
	"testing"
)

var globl *int

func G() {
	F()
}

func F() {
	var x int
	globl = &x
}

func main() {
	nf := testing.AllocsPerRun(100, F)
	ng := testing.AllocsPerRun(100, G)
	if int(nf) > 1 {
		fmt.Printf("AllocsPerRun(100, F) = %v, want 1\n", nf)
		os.Exit(1)
	}
	if int(ng) > 1 {
		fmt.Printf("AllocsPerRun(100, G) = %v, want 1\n", ng)
		os.Exit(1)
	}
}
