From cbb9cd03f80c0487cee0adcfef9a2a5de9fe2cc1 Mon Sep 17 00:00:00 2001 From: Keith Randall Date: Mon, 13 Feb 2023 23:27:51 -0800 Subject: cmd/compile: ensure FuncForPC works on closures that start with NOPs A 0-sized no-op shouldn't prevent us from detecting that the first instruction is from an inlined callee. Update #58300 Change-Id: Ic5f6ed108c54a32c05e9b2264b516f2cc17e4619 Reviewed-on: https://go-review.googlesource.com/c/go/+/467977 Run-TryBot: Keith Randall Reviewed-by: Keith Randall Reviewed-by: David Chase TryBot-Result: Gopher Robot --- src/cmd/compile/internal/ssagen/ssa.go | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src') diff --git a/src/cmd/compile/internal/ssagen/ssa.go b/src/cmd/compile/internal/ssagen/ssa.go index 004806b029..6831da6908 100644 --- a/src/cmd/compile/internal/ssagen/ssa.go +++ b/src/cmd/compile/internal/ssagen/ssa.go @@ -7171,7 +7171,7 @@ func genssa(f *ssa.Func, pp *objw.Progs) { // This ensures that runtime.FuncForPC(uintptr(reflect.ValueOf(fn).Pointer())).Name() // returns the right answer. See issue 58300. for p := pp.Text; p != nil; p = p.Link { - if p.As == obj.AFUNCDATA || p.As == obj.APCDATA || p.As == obj.ATEXT { + if p.As == obj.AFUNCDATA || p.As == obj.APCDATA || p.As == obj.ATEXT || p.As == obj.ANOP { continue } if base.Ctxt.PosTable.Pos(p.Pos).Base().InliningIndex() >= 0 { -- cgit v1.3-5-g9baa