diff --git a/src/cmd/compile/internal/escape/call.go b/src/cmd/compile/internal/escape/call.go index 2ba1955b556bd..0caec2f6b982a 100644 --- a/src/cmd/compile/internal/escape/call.go +++ b/src/cmd/compile/internal/escape/call.go @@ -321,7 +321,10 @@ func (e *escape) tagHole(ks []hole, fn *ir.Name, param *types.Field) hole { } if e.inMutualBatch(fn) { - return e.addr(ir.AsNode(param.Nname)) + if param.Nname == nil { + return e.discardHole() + } + return e.addr(param.Nname.(*ir.Name)) } // Call to previously tagged function. diff --git a/src/cmd/compile/internal/ir/expr.go b/src/cmd/compile/internal/ir/expr.go index 5eed85ed84c0d..37e2689b97ef8 100644 --- a/src/cmd/compile/internal/ir/expr.go +++ b/src/cmd/compile/internal/ir/expr.go @@ -1110,7 +1110,7 @@ func IsReflectHeaderDataField(l Node) bool { func ParamNames(ft *types.Type) []Node { args := make([]Node, ft.NumParams()) for i, f := range ft.Params().FieldSlice() { - args[i] = AsNode(f.Nname) + args[i] = f.Nname.(*Name) } return args } diff --git a/src/cmd/compile/internal/ir/node.go b/src/cmd/compile/internal/ir/node.go index 317c716b16a86..b1829faf7f311 100644 --- a/src/cmd/compile/internal/ir/node.go +++ b/src/cmd/compile/internal/ir/node.go @@ -462,13 +462,6 @@ const ( ) -func AsNode(n types.Object) Node { - if n == nil { - return nil - } - return n.(Node) -} - var BlankNode *Name func IsConst(n Node, ct constant.Kind) bool { diff --git a/src/cmd/compile/internal/reflectdata/alg.go b/src/cmd/compile/internal/reflectdata/alg.go index d46b0cd360c5c..01135de39f454 100644 --- a/src/cmd/compile/internal/reflectdata/alg.go +++ b/src/cmd/compile/internal/reflectdata/alg.go @@ -153,8 +153,8 @@ func hashFunc(t *types.Type) *ir.Func { sym.Def = fn.Nname fn.Pragma |= ir.Noinline // TODO(mdempsky): We need to emit this during the unified frontend instead, to allow inlining. - np := ir.AsNode(fn.Type().Params().Field(0).Nname) - nh := ir.AsNode(fn.Type().Params().Field(1).Nname) + np := fn.Type().Params().Field(0).Nname.(*ir.Name) + nh := fn.Type().Params().Field(1).Nname.(*ir.Name) switch t.Kind() { case types.TARRAY: @@ -375,9 +375,9 @@ func eqFunc(t *types.Type) *ir.Func { sym.Def = fn.Nname fn.Pragma |= ir.Noinline // TODO(mdempsky): We need to emit this during the unified frontend instead, to allow inlining. - np := ir.AsNode(fn.Type().Params().Field(0).Nname) - nq := ir.AsNode(fn.Type().Params().Field(1).Nname) - nr := ir.AsNode(fn.Type().Results().Field(0).Nname) + np := fn.Type().Params().Field(0).Nname.(*ir.Name) + nq := fn.Type().Params().Field(1).Nname.(*ir.Name) + nr := fn.Type().Results().Field(0).Nname.(*ir.Name) // Label to jump to if an equality test fails. neq := typecheck.AutoLabel(".neq") diff --git a/src/cmd/compile/internal/test/abiutilsaux_test.go b/src/cmd/compile/internal/test/abiutilsaux_test.go index 3316af6940024..7f929c603da1a 100644 --- a/src/cmd/compile/internal/test/abiutilsaux_test.go +++ b/src/cmd/compile/internal/test/abiutilsaux_test.go @@ -76,7 +76,7 @@ func tokenize(src string) []string { } func verifyParamResultOffset(t *testing.T, f *types.Field, r abi.ABIParamAssignment, which string, idx int) int { - n := ir.AsNode(f.Nname).(*ir.Name) + n := f.Nname.(*ir.Name) if n.FrameOffset() != int64(r.Offset()) { t.Errorf("%s %d: got offset %d wanted %d t=%v", which, idx, r.Offset(), n.Offset_, f.Type) diff --git a/src/cmd/compile/internal/typecheck/syms.go b/src/cmd/compile/internal/typecheck/syms.go index 4f751299981d3..61a3422b1a714 100644 --- a/src/cmd/compile/internal/typecheck/syms.go +++ b/src/cmd/compile/internal/typecheck/syms.go @@ -16,7 +16,7 @@ func LookupRuntime(name string) *ir.Name { if s == nil || s.Def == nil { base.Fatalf("LookupRuntime: can't find runtime.%s", name) } - return ir.AsNode(s.Def).(*ir.Name) + return s.Def.(*ir.Name) } // SubstArgTypes substitutes the given list of types for @@ -126,5 +126,5 @@ func LookupCoverage(name string) *ir.Name { if sym == nil { base.Fatalf("LookupCoverage: can't find runtime/coverage.%s", name) } - return ir.AsNode(sym.Def).(*ir.Name) + return sym.Def.(*ir.Name) }