p0 := &i // ERROR "moved to heap: p0"
p1 := &p0 // ERROR "moved to heap: p1"
p2 := &p1 // ERROR "moved to heap: p2"
- sink = &p2 // ERROR "&p2 escapes to heap"
+ sink = &p2
}
func level1() {
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0 // ERROR "moved to heap: p1"
p2 := &p1
- sink = p2 // ERROR "p2 escapes to heap"
+ sink = p2
}
func level2() {
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0
p2 := &p1
- sink = *p2 // ERROR "\*p2 escapes to heap"
+ sink = *p2
}
func level3() {
p0 := &i
p1 := &p0
p2 := &p1
- sink = **p2 // ERROR "\* \(\*p2\) escapes to heap"
+ sink = **p2
}
func level4() {
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0
p2 := p1 // ERROR "moved to heap: p2"
- sink = &p2 // ERROR "&p2 escapes to heap"
+ sink = &p2
}
func level5() {
p0 := &i // ERROR "moved to heap: p0"
p1 := &p0
p2 := p1
- sink = p2 // ERROR "p2 escapes to heap"
+ sink = p2
}
func level6() {
p0 := &i
p1 := &p0
p2 := p1
- sink = *p2 // ERROR "\*p2 escapes to heap"
+ sink = *p2
}
func level7() {
p1 := &p0
// note *p1 == &i
p2 := *p1 // ERROR "moved to heap: p2"
- sink = &p2 // ERROR "&p2 escapes to heap"
+ sink = &p2
}
func level8() {
p0 := &i
p1 := &p0
p2 := *p1
- sink = p2 // ERROR "p2 escapes to heap"
+ sink = p2
}
func level9() {
p0 := &i
p1 := &p0
p2 := **p1 // ERROR "moved to heap: p2"
- sink = &p2 // ERROR "&p2 escapes to heap"
+ sink = &p2
}