mirror of
https://github.com/golang/go.git
synced 2025-12-08 06:10:04 +00:00
[dev.typeparams] cmd/compile: introduce OCONVIDATA op
This operation computes just the data field needed to put its argument into an interface. Used by generics because we produce the type field of an interface using dictionaries (instead of statically). With this operation defined, we can now assert that shape types are never marked as used in interfaces (the only previous use was IDATA(CONVIFACE(t))). Change-Id: Idb1eb5f3b238285cb99413d382599c0621b7681a Reviewed-on: https://go-review.googlesource.com/c/go/+/337109 Trust: Keith Randall <khr@golang.org> Trust: Dan Scales <danscales@google.com> Run-TryBot: Keith Randall <khr@golang.org> TryBot-Result: Go Bot <gobot@golang.org> Reviewed-by: Dan Scales <danscales@google.com>
This commit is contained in:
parent
9f928f9318
commit
77e0bf294c
13 changed files with 161 additions and 145 deletions
|
|
@ -109,7 +109,7 @@ func (e *escape) exprSkipInit(k hole, n ir.Node) {
|
|||
} else {
|
||||
e.expr(k, n.X)
|
||||
}
|
||||
case ir.OCONVIFACE:
|
||||
case ir.OCONVIFACE, ir.OCONVIDATA:
|
||||
n := n.(*ir.ConvExpr)
|
||||
if !n.X.Type().IsInterface() && !types.IsDirectIface(n.X.Type()) {
|
||||
k = e.spill(k, n)
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue