mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.regabi] cmd/compile: intercept the making of OADDR nodes
This is a mechanical change to intercept the construction of all OADDR nodes. We will use the new nodAddr and nodAddrAt functions to compute the Addrtaken bit. Change-Id: I90ee3acb8e32540a198a9999284573418729f422 Reviewed-on: https://go-review.googlesource.com/c/go/+/275694 Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Trust: Keith Randall <khr@golang.org> Trust: Dan Scales <danscales@google.com> Reviewed-by: Dan Scales <danscales@google.com>
This commit is contained in:
parent
617383377f
commit
fea898a4b0
11 changed files with 66 additions and 56 deletions
|
|
@ -274,7 +274,7 @@ func walkrange(nrange ir.Node) ir.Node {
|
|||
hp := temp(types.NewPtr(nrange.Type().Elem()))
|
||||
tmp := ir.Nod(ir.OINDEX, ha, nodintconst(0))
|
||||
tmp.SetBounded(true)
|
||||
init = append(init, ir.Nod(ir.OAS, hp, ir.Nod(ir.OADDR, tmp, nil)))
|
||||
init = append(init, ir.Nod(ir.OAS, hp, nodAddr(tmp)))
|
||||
|
||||
// Use OAS2 to correctly handle assignments
|
||||
// of the form "v1, a[v1] := range".
|
||||
|
|
@ -305,12 +305,12 @@ func walkrange(nrange ir.Node) ir.Node {
|
|||
fn := syslook("mapiterinit")
|
||||
|
||||
fn = substArgTypes(fn, t.Key(), t.Elem(), th)
|
||||
init = append(init, mkcall1(fn, nil, nil, typename(t), ha, ir.Nod(ir.OADDR, hit, nil)))
|
||||
init = append(init, mkcall1(fn, nil, nil, typename(t), ha, nodAddr(hit)))
|
||||
nfor.SetLeft(ir.Nod(ir.ONE, nodSym(ir.ODOT, hit, keysym), nodnil()))
|
||||
|
||||
fn = syslook("mapiternext")
|
||||
fn = substArgTypes(fn, th)
|
||||
nfor.SetRight(mkcall1(fn, nil, nil, ir.Nod(ir.OADDR, hit, nil)))
|
||||
nfor.SetRight(mkcall1(fn, nil, nil, nodAddr(hit)))
|
||||
|
||||
key := nodSym(ir.ODOT, hit, keysym)
|
||||
key = ir.Nod(ir.ODEREF, key, nil)
|
||||
|
|
@ -572,7 +572,7 @@ func arrayClear(loop, v1, v2, a ir.Node) ir.Node {
|
|||
|
||||
tmp := ir.Nod(ir.OINDEX, a, nodintconst(0))
|
||||
tmp.SetBounded(true)
|
||||
tmp = ir.Nod(ir.OADDR, tmp, nil)
|
||||
tmp = nodAddr(tmp)
|
||||
tmp = convnop(tmp, types.Types[types.TUNSAFEPTR])
|
||||
n.PtrBody().Append(ir.Nod(ir.OAS, hp, tmp))
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue