зеркало из https://github.com/CryptoPro/go.git
cmd/compile: ignore contentEscapes for marking nodes as escaping
Redo of CL 28575 with fixed test. We're in a pre-KeepAlive world for a bit yet, the old tests were in a client which was in a post-KeepAlive world. Change-Id: I114fd630339d761ab3306d1d99718d3cb973678d Reviewed-on: https://go-review.googlesource.com/28582 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Gobot Gobot <gobot@golang.org> Reviewed-by: Brad Fitzpatrick <bradfitz@golang.org>
This commit is contained in:
Родитель
ca264cdc62
Коммит
83c73a85db
|
@ -1572,7 +1572,7 @@ func esccall(e *EscState, n *Node, up *Node) {
|
|||
}
|
||||
|
||||
if haspointers(t.Type) {
|
||||
if escassignfromtag(e, note, nE.Escretval, src) == EscNone && up.Op != ODEFER && up.Op != OPROC {
|
||||
if escassignfromtag(e, note, nE.Escretval, src)&EscMask == EscNone && up.Op != ODEFER && up.Op != OPROC {
|
||||
a := src
|
||||
for a.Op == OCONVNOP {
|
||||
a = a.Left
|
||||
|
|
11
test/live.go
11
test/live.go
|
@ -643,3 +643,14 @@ func good40() {
|
|||
printnl() // ERROR "live at call to printnl: autotmp_[0-9]+ ret$"
|
||||
_ = t
|
||||
}
|
||||
|
||||
func ddd1(x, y *int) { // ERROR "live at entry to ddd1: x y$"
|
||||
ddd2(x, y) // ERROR "live at call to ddd2: x y autotmp_[0-9]+$"
|
||||
printnl() // ERROR "live at call to printnl: x y$"
|
||||
// Note: no autotmp live at printnl. See issue 16996.
|
||||
}
|
||||
func ddd2(a ...*int) { // ERROR "live at entry to ddd2: a$"
|
||||
sink = a[0]
|
||||
}
|
||||
|
||||
var sink *int
|
||||
|
|
|
@ -646,3 +646,12 @@ func good40() {
|
|||
printnl() // ERROR "live at call to printnl: autotmp_[0-9]+ ret$"
|
||||
_ = t
|
||||
}
|
||||
|
||||
func ddd1(x, y *int) { // ERROR "live at entry to ddd1: x y$"
|
||||
ddd2(x, y) // ERROR "live at call to ddd2: x y autotmp_[0-9]+$"
|
||||
printnl() // ERROR "live at call to printnl: x y$"
|
||||
// Note: no autotmp live at printnl. See issue 16996.
|
||||
}
|
||||
func ddd2(a ...*int) { // ERROR "live at entry to ddd2: a$"
|
||||
sink = a[0]
|
||||
}
|
||||
|
|
Загрузка…
Ссылка в новой задаче