In inl.go, that code path is unused, since we added ir.BasicLit to
represent unnamed OLITERALs.
In race.go, rather than cloning ir.RegFP, we can just create it from
scratch again.
Passes toolstash -cmp (incl. w/ -race).
Change-Id: I8e063e4898d2acf056ceca5bc03df6b40a14eca9
Reviewed-on: https://go-review.googlesource.com/c/go/+/281192
Trust: Matthew Dempsky <mdempsky@google.com>
Run-TryBot: Matthew Dempsky <mdempsky@google.com>
TryBot-Result: Go Bot <gobot@golang.org>
Reviewed-by: Cuong Manh Le <cuong.manhle.vn@gmail.com>
if n.Sym() != nil {
return n
}
- if n, ok := n.(*ir.Name); ok && n.Op() == ir.OLITERAL {
- // This happens for unnamed OLITERAL.
- // which should really not be a *Name, but for now it is.
- // ir.Copy(n) is not allowed generally and would panic below,
- // but it's OK in this situation.
- n = n.CloneName()
- n.SetPos(subst.updatedPos(n.Pos()))
- return n
- }
case ir.ORETURN:
// Since we don't handle bodies with closures,
"cmd/compile/internal/base"
"cmd/compile/internal/ir"
"cmd/compile/internal/ssagen"
+ "cmd/compile/internal/typecheck"
"cmd/compile/internal/types"
"cmd/internal/src"
"cmd/internal/sys"
// This only works for amd64. This will not
// work on arm or others that might support
// race in the future.
- nodpc := ir.RegFP.CloneName()
+
+ nodpc := ir.NewNameAt(src.NoXPos, typecheck.Lookup(".fp"))
+ nodpc.Class_ = ir.PPARAM
+ nodpc.SetUsed(true)
nodpc.SetType(types.Types[types.TUINTPTR])
nodpc.SetFrameOffset(int64(-types.PtrSize))
fn.Dcl = append(fn.Dcl, nodpc)