mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
cmd/gc: disable inlining of method values
They caused internal compiler errors and they're expensive enough that inlining them doesn't make sense. Fixes #5259. R=golang-dev, r, iant, remyoudompheng CC=golang-dev https://golang.org/cl/8636043
This commit is contained in:
parent
968732b677
commit
7b8e08617e
|
@ -188,6 +188,7 @@ ishairy(Node *n, int *budget)
|
|||
break;
|
||||
|
||||
case OCLOSURE:
|
||||
case OCALLPART:
|
||||
case ORANGE:
|
||||
case OFOR:
|
||||
case OSELECT:
|
||||
|
|
17
test/fixedbugs/issue5259.dir/bug.go
Normal file
17
test/fixedbugs/issue5259.dir/bug.go
Normal file
|
@ -0,0 +1,17 @@
|
|||
// Copyright 2013 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 bug
|
||||
|
||||
type S struct {
|
||||
F func()
|
||||
}
|
||||
|
||||
type X interface {
|
||||
Bar()
|
||||
}
|
||||
|
||||
func Foo(x X) *S {
|
||||
return &S{F: x.Bar}
|
||||
}
|
16
test/fixedbugs/issue5259.dir/main.go
Normal file
16
test/fixedbugs/issue5259.dir/main.go
Normal file
|
@ -0,0 +1,16 @@
|
|||
// Copyright 2013 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 "./bug"
|
||||
|
||||
type foo int
|
||||
|
||||
func (f *foo) Bar() {
|
||||
}
|
||||
|
||||
func main() {
|
||||
bug.Foo(new(foo))
|
||||
}
|
9
test/fixedbugs/issue5259.go
Normal file
9
test/fixedbugs/issue5259.go
Normal file
|
@ -0,0 +1,9 @@
|
|||
// compiledir
|
||||
|
||||
// Copyright 2013 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 5259: Inlining of method value causes internal compiler error
|
||||
|
||||
package ignored
|
Loading…
Reference in a new issue