mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
cmd/compile: always zero the temporary in mapKeyTemp
As we are taking its address, always zero it. In many cases the temporary will be optimized out. But in case it does not (e.g. -N, -race), this ensures it has the right liveness information. May fix the noopt builder. Change-Id: I3d5d617c276d2a1a1aaebff813b4cd60bc691592 Reviewed-on: https://go-review.googlesource.com/c/go/+/309771 Trust: Cherry Zhang <cherryyz@google.com> Run-TryBot: Cherry Zhang <cherryyz@google.com> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Than McIntosh <thanm@google.com>
This commit is contained in:
parent
b4881d930a
commit
8c2a8b1771
1 changed files with 1 additions and 2 deletions
|
|
@ -306,8 +306,7 @@ func (o *orderState) mapKeyTemp(t *types.Type, n ir.Node) ir.Node {
|
|||
if kt.Align < nt.Align {
|
||||
base.Fatalf("mapKeyTemp: key type is not sufficiently aligned, kt=%v nt=%v", kt, nt)
|
||||
}
|
||||
clear := base.Flag.Cfg.Instrumenting // clear tmp if instrumenting, as it may be live at an inserted race call
|
||||
tmp := o.newTemp(kt, clear)
|
||||
tmp := o.newTemp(kt, true)
|
||||
// *(*nt)(&tmp) = n
|
||||
var e ir.Node = typecheck.NodAddr(tmp)
|
||||
e = ir.NewConvExpr(n.Pos(), ir.OCONVNOP, nt.PtrTo(), e)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue