1// compile
2
3// Copyright 2023 The Go Authors. All rights reserved.
4// Use of this source code is governed by a BSD-style
5// license that can be found in the LICENSE file.
6
7// Unified frontend generated unnecessary temporaries for expressions
8// within unsafe.Sizeof, etc functions.
9
10package main
11
12import "unsafe"
13
14func F[G int](g G) (uintptr, uintptr, uintptr) {
15	var c chan func() int
16	type s struct {
17		g G
18		x []int
19	}
20	return unsafe.Sizeof(s{g, make([]int, (<-c)())}),
21		unsafe.Alignof(s{g, make([]int, (<-c)())}),
22		unsafe.Offsetof(s{g, make([]int, (<-c)())}.x)
23}
24
25func main() {
26	F(0)
27}
28