// asmcheck

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

// Make sure a pointer variable and a zero-sized variable
// aren't allocated to the same stack slot.
// See issue 24993.

package codegen

func zeroSize() {
	c := make(chan struct{})
	// amd64:`MOVQ \$0, command-line-arguments\.s\+56\(SP\)`
	var s *int
	// force s to be a stack object, also use some (fixed) stack space
	g(&s, 1, 2, 3, 4, 5)

	// amd64:`LEAQ command-line-arguments\..*\+55\(SP\)`
	c <- noliteral(struct{}{})
}

// Like zeroSize, but without hiding the zero-sized struct.
func zeroSize2() {
	c := make(chan struct{})
	// amd64:`MOVQ \$0, command-line-arguments\.s\+48\(SP\)`
	var s *int
	// force s to be a stack object, also use some (fixed) stack space
	g(&s, 1, 2, 3, 4, 5)

	// amd64:`LEAQ command-line-arguments\..*stmp_\d+\(SB\)`
	c <- struct{}{}
}

//go:noinline
func g(**int, int, int, int, int, int) {}

// noliteral prevents the compiler from recognizing a literal value.
//
//go:noinline
func noliteral[T any](t T) T {
	return t
}
