You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
773 B
44 lines
773 B
// 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"
|
|
}
|