// Copyright 2023 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"
)

var is []func() int

func inline(j, k int) []*int {
	var a []*int
	for private := j; private < k; private++ {
		a = append(a, &private)
	}
	return a
}

//go:noinline
func notinline(j, k int) ([]*int, *int) {
	for shared := j; shared < k; shared++ {
		if shared == k/2 {
			// want the call inlined, want "private" in that inline to be transformed,
			// (believe it ends up on init node of the return).
			// but do not want "shared" transformed,
			return inline(j, k), &shared
		}
	}
	return nil, &j
}

func main() {
	a, p := notinline(2, 9)
	fmt.Printf("a[0]=%d,*p=%d\n", *a[0], *p)
	if *a[0] != 2 {
		os.Exit(1)
	}
}
