Closed
Description
go version devel +5e954047bc Fri Mar 24 20:07:15 2017 +0000 linux/amd64
The following program:
package p
func f1() {
f2()
}
func f2() {
if false {
_ = func() {}
}
}
crashes the compiler on tip, but not in go1.8 and older.
./0.go:4:4: internal compiler error: cannot inline function containing closure:
. CLOSURE l(9) ff(1) tc(1) p.f2.func1 FUNC-func()
goroutine 1 [running]:
runtime/debug.Stack(0x0, 0x0, 0x0)
/home/alberto/go/src/runtime/debug/stack.go:24 +0x79
cmd/compile/internal/gc.Fatalf(0xad5716, 0x2e, 0xc4203048a0, 0x1, 0x1)
/home/alberto/go/src/cmd/compile/internal/gc/subr.go:175 +0x230
cmd/compile/internal/gc.(*inlsubst).node(0xc420305380, 0xc4200b23c0, 0xc42000f500)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:1031 +0xd2f
cmd/compile/internal/gc.(*inlsubst).node(0xc420305380, 0xc4202dfe60, 0x1)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:1035 +0x626
cmd/compile/internal/gc.(*inlsubst).list(0xc420305380, 0xc4202d5d60, 0x0, 0x0, 0xe76a08)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:952 +0xd1
cmd/compile/internal/gc.(*inlsubst).node(0xc420305380, 0xc4202dfc20, 0x1)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:1039 +0x841
cmd/compile/internal/gc.(*inlsubst).list(0xc420305380, 0xc420306040, 0xc4202f6800, 0xc42030a360, 0xc4202da6c0)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:952 +0xd1
cmd/compile/internal/gc.mkinlcall1(0xc42030a240, 0xc4202f6400, 0x0, 0xa37bc0)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:829 +0xb6d
cmd/compile/internal/gc.mkinlcall(0xc42030a240, 0xc4202f6400, 0xc420305600, 0xe77e80)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:547 +0x78
cmd/compile/internal/gc.inlnode(0xc42030a240, 0x1)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:509 +0x460
cmd/compile/internal/gc.inlnodelist(0xc420306120)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:380 +0x55
cmd/compile/internal/gc.inlnode(0xc4200b2140, 0x2)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:486 +0x2e1
cmd/compile/internal/gc.inlcalls(0xc4200b2140)
/home/alberto/go/src/cmd/compile/internal/gc/inl.go:336 +0x50
cmd/compile/internal/gc.Main.func1(0xc420306020, 0x1, 0x4, 0xc4202fc800)
/home/alberto/go/src/cmd/compile/internal/gc/main.go:465 +0x7f
cmd/compile/internal/gc.(*bottomUpVisitor).visit(0xc420305ab0, 0xc4200b2140, 0x0)
/home/alberto/go/src/cmd/compile/internal/gc/esc.go:106 +0x259
cmd/compile/internal/gc.visitBottomUp(0xc4202d5fe0, 0x3, 0x4, 0xadb438)
/home/alberto/go/src/cmd/compile/internal/gc/esc.go:62 +0xe7
cmd/compile/internal/gc.Main(0xadb350)
/home/alberto/go/src/cmd/compile/internal/gc/main.go:456 +0x26cd
main.main()
/home/alberto/go/src/cmd/compile/main.go:49 +0x95
This may be related to #19679.