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:
Daniel Morsing 2013-04-13 08:22:16 +02:00
parent 968732b677
commit 7b8e08617e
4 changed files with 43 additions and 0 deletions

View file

@ -188,6 +188,7 @@ ishairy(Node *n, int *budget)
break;
case OCLOSURE:
case OCALLPART:
case ORANGE:
case OFOR:
case OSELECT:

View 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}
}

View 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))
}

View 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