mirror of
https://github.com/golang/go
synced 2024-09-15 22:20:06 +00:00
cmd/compile: fix inlining of switch issue
The issue was seen when inlining an exported function that contained a fallthrough statement. Fixes #15071 Change-Id: I1e8215ad49d57673dba7e8f8bd2ed8ad290dc452 Reviewed-on: https://go-review.googlesource.com/21452 Reviewed-by: Dave Cheney <dave@cheney.net>
This commit is contained in:
parent
6a0bb87bd0
commit
ac8d97b679
|
@ -189,6 +189,7 @@ var goopnames = []string{
|
|||
OSUB: "-",
|
||||
OSWITCH: "switch",
|
||||
OXOR: "^",
|
||||
OXFALL: "fallthrough",
|
||||
}
|
||||
|
||||
// Fmt "%O": Node opcodes
|
||||
|
|
24
test/fixedbugs/issue15071.dir/exp/exp.go
Normal file
24
test/fixedbugs/issue15071.dir/exp/exp.go
Normal file
|
@ -0,0 +1,24 @@
|
|||
// Copyright 2016 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.
|
||||
|
||||
package exp
|
||||
|
||||
func Exported(x int) int {
|
||||
return inlined(x)
|
||||
}
|
||||
|
||||
func inlined(x int) int {
|
||||
y := 0
|
||||
switch {
|
||||
case x > 0:
|
||||
y += 5
|
||||
return 0 + y
|
||||
case x < 1:
|
||||
y += 6
|
||||
fallthrough
|
||||
default:
|
||||
y += 7
|
||||
return 2 + y
|
||||
}
|
||||
}
|
14
test/fixedbugs/issue15071.dir/main.go
Normal file
14
test/fixedbugs/issue15071.dir/main.go
Normal file
|
@ -0,0 +1,14 @@
|
|||
// run
|
||||
|
||||
// Copyright 2016 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.
|
||||
|
||||
package main
|
||||
|
||||
import "os"
|
||||
import "./exp"
|
||||
|
||||
func main() {
|
||||
_ = exp.Exported(len(os.Args))
|
||||
}
|
Loading…
Reference in a new issue