go/test/fixedbugs/issue19679.go
Josh Bleecher Snyder ad8c17b703 cmd/compile: don't export dead code in inlineable fuctions
CL 37499 allows inlining more functions by ignoring dead code.
However, that dead code can contain non-exportable constructs.
Teach the exporter not to export dead code.

Fixes #19679 

Change-Id: Idb1d3794053514544b6f1035d29262aa6683e1e7
Reviewed-on: https://go-review.googlesource.com/38601
Run-TryBot: Josh Bleecher Snyder <josharian@gmail.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>
Reviewed-by: Robert Griesemer <gri@golang.org>
2017-03-24 17:21:05 +00:00

39 lines
536 B
Go

// compile
// Copyright 2017 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.
// Used to crash when a type switch was present in dead code
// in an inlineable function.
package p
func Then() {
var i interface{}
if false {
switch i.(type) {
}
}
}
func Else() {
var i interface{}
if true {
_ = i
} else {
switch i.(type) {
}
}
}
func Switch() {
var i interface{}
switch 5 {
case 3:
switch i.(type) {
}
case 5:
}
}