mirror of
https://github.com/golang/go
synced 2024-11-02 11:50:30 +00:00
44 lines
773 B
Go
44 lines
773 B
Go
|
// errorcheck -0 -m
|
||
|
|
||
|
// 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.
|
||
|
|
||
|
// Issue 23521: improve early DCE for if without explicit else.
|
||
|
|
||
|
package p
|
||
|
|
||
|
//go:noinline
|
||
|
func nonleaf() {}
|
||
|
|
||
|
const truth = true
|
||
|
|
||
|
func f() int { // ERROR "can inline f"
|
||
|
if truth {
|
||
|
return 0
|
||
|
}
|
||
|
// If everything below is removed, as it should,
|
||
|
// function f should be inlineable.
|
||
|
nonleaf()
|
||
|
for {
|
||
|
panic("")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
func g() int { // ERROR "can inline g"
|
||
|
return f() // ERROR "inlining call to f"
|
||
|
}
|
||
|
|
||
|
func f2() int { // ERROR "can inline f2"
|
||
|
if !truth {
|
||
|
nonleaf()
|
||
|
} else {
|
||
|
return 0
|
||
|
}
|
||
|
panic("")
|
||
|
}
|
||
|
|
||
|
func g2() int { // ERROR "can inline g2"
|
||
|
return f2() // ERROR "inlining call to f2"
|
||
|
}
|