// 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" }