mirror of
https://github.com/golang/go
synced 2024-11-21 19:04:44 -07:00
cmd/gc: must not inline panic, recover
R=lvd, gri CC=golang-dev https://golang.org/cl/5731061
This commit is contained in:
parent
5ab9d2befd
commit
cae604f734
@ -182,6 +182,8 @@ ishairy(Node *n, int *budget)
|
||||
case OCALLFUNC:
|
||||
case OCALLINTER:
|
||||
case OCALLMETH:
|
||||
case OPANIC:
|
||||
case ORECOVER:
|
||||
if(debug['l'] < 4)
|
||||
return 1;
|
||||
break;
|
||||
|
@ -11,8 +11,8 @@ package foo
|
||||
|
||||
var p *int
|
||||
|
||||
func alloc(x int) *int { // ERROR "can inline alloc" "moved to heap: x"
|
||||
return &x // ERROR "&x escapes to heap"
|
||||
func alloc(x int) *int { // ERROR "can inline alloc" "moved to heap: x"
|
||||
return &x // ERROR "&x escapes to heap"
|
||||
}
|
||||
|
||||
var f func()
|
||||
@ -22,12 +22,18 @@ func f1() {
|
||||
|
||||
// Escape analysis used to miss inlined code in closures.
|
||||
|
||||
func() { // ERROR "func literal does not escape"
|
||||
p = alloc(3) // ERROR "inlining call to alloc" "&x escapes to heap" "moved to heap: x"
|
||||
func() { // ERROR "func literal does not escape"
|
||||
p = alloc(3) // ERROR "inlining call to alloc" "&x escapes to heap" "moved to heap: x"
|
||||
}()
|
||||
|
||||
f = func() { // ERROR "func literal escapes to heap"
|
||||
p = alloc(3) // ERROR "inlining call to alloc" "&x escapes to heap" "moved to heap: x"
|
||||
|
||||
f = func() { // ERROR "func literal escapes to heap"
|
||||
p = alloc(3) // ERROR "inlining call to alloc" "&x escapes to heap" "moved to heap: x"
|
||||
}
|
||||
f()
|
||||
}
|
||||
|
||||
func f2() {} // ERROR "can inline f2"
|
||||
|
||||
// No inline for panic, recover.
|
||||
func f3() { panic(1) }
|
||||
func f4() { recover() }
|
||||
|
Loading…
Reference in New Issue
Block a user