]> Cypherpunks.ru repositories - gostls13.git/blob - test/fixedbugs/issue54632.go
cmd/compile/internal/inline: score call sites exposed by inlines
[gostls13.git] / test / fixedbugs / issue54632.go
1 // run
2
3 // Copyright 2022 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 // The inliner would erroneously scan the caller function's body for
8 // reassignments *before* substituting the inlined function call body,
9 // which could cause false positives in deciding when it's safe to
10 // transitively inline indirect function calls.
11
12 package main
13
14 func main() {
15         bug1()
16         bug2(fail)
17 }
18
19 func bug1() {
20         fn := fail
21         fn = pass
22         fn()
23 }
24
25 func bug2(fn func()) {
26         fn = pass
27         fn()
28 }
29
30 func pass() {}
31 func fail() { panic("FAIL") }