mirror of
https://github.com/golang/go
synced 2024-09-04 23:44:16 +00:00
Revert of cmd/compile: ignore contentEscapes for marking nodes as escaping
Reason for revert: broke the build due to cherrypick; relies on an unsubmitted parent CL. Original issue's description: > cmd/compile: ignore contentEscapes for marking nodes as escaping > > We can still stack allocate and VarKill nodes which don't > escape but their content does. > > Fixes #16996 > > Change-Id: If8aa0fcf2c327b4cb880a3d5af8d213289e6f6bf > Reviewed-on: https://go-review.googlesource.com/28575 > Run-TryBot: Keith Randall <khr@golang.org> > TryBot-Result: Gobot Gobot <gobot@golang.org> > Reviewed-by: David Chase <drchase@google.com> > Change-Id: Ie1a325209de14d70af6acb2d78269b7a0450da7a Reviewed-on: https://go-review.googlesource.com/28578 Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
parent
923a74ce77
commit
bdb3b790c6
|
@ -1572,7 +1572,7 @@ func esccall(e *EscState, n *Node, up *Node) {
|
||||||
}
|
}
|
||||||
|
|
||||||
if haspointers(t.Type) {
|
if haspointers(t.Type) {
|
||||||
if escassignfromtag(e, note, nE.Escretval, src)&EscMask == EscNone && up.Op != ODEFER && up.Op != OPROC {
|
if escassignfromtag(e, note, nE.Escretval, src) == EscNone && up.Op != ODEFER && up.Op != OPROC {
|
||||||
a := src
|
a := src
|
||||||
for a.Op == OCONVNOP {
|
for a.Op == OCONVNOP {
|
||||||
a = a.Left
|
a = a.Left
|
||||||
|
|
10
test/live.go
10
test/live.go
|
@ -643,13 +643,3 @@ func good40() {
|
||||||
printnl() // ERROR "live at call to printnl: autotmp_[0-9]+ ret$"
|
printnl() // ERROR "live at call to printnl: autotmp_[0-9]+ ret$"
|
||||||
_ = t
|
_ = t
|
||||||
}
|
}
|
||||||
|
|
||||||
func ddd1(x, y *int) { // ERROR "live at entry to ddd1: x y$"
|
|
||||||
ddd2(x, y) // ERROR "live at call to ddd2: autotmp_[0-9]+$"
|
|
||||||
printnl() // nothing live here. See issue 16996.
|
|
||||||
}
|
|
||||||
func ddd2(a ...*int) { // ERROR "live at entry to ddd2: a$"
|
|
||||||
sink = a[0]
|
|
||||||
}
|
|
||||||
|
|
||||||
var sink *int
|
|
||||||
|
|
|
@ -646,11 +646,3 @@ func good40() {
|
||||||
printnl() // ERROR "live at call to printnl: autotmp_[0-9]+ ret$"
|
printnl() // ERROR "live at call to printnl: autotmp_[0-9]+ ret$"
|
||||||
_ = t
|
_ = t
|
||||||
}
|
}
|
||||||
|
|
||||||
func ddd1(x, y *int) { // ERROR "live at entry to ddd1: x y$"
|
|
||||||
ddd2(x, y) // ERROR "live at call to ddd2: autotmp_[0-9]+$"
|
|
||||||
printnl() // nothing live here. See issue 16996.
|
|
||||||
}
|
|
||||||
func ddd2(a ...*int) { // ERROR "live at entry to ddd2: a$"
|
|
||||||
sink = a[0]
|
|
||||||
}
|
|
||||||
|
|
Loading…
Reference in a new issue