From 7af28fa90ec2ce4c90ca47b6bc3e348ac8cb133a Mon Sep 17 00:00:00 2001 From: Matthew Dempsky Date: Fri, 18 Aug 2023 00:09:06 -0700 Subject: cmd/compile/internal/ir: remove AsNode Except for a single call site in escape analysis, every use of ir.AsNode involves a types.Object that's known to contain an *ir.Name. Asserting directly to that type makes the code simpler and more efficient. The one use in escape analysis is extended to handle nil correctly without it. Change-Id: I694ae516903e541341d82c2f65a9155e4b0a9809 Reviewed-on: https://go-review.googlesource.com/c/go/+/520775 TryBot-Bypass: Matthew Dempsky Run-TryBot: Matthew Dempsky Auto-Submit: Matthew Dempsky Reviewed-by: Cuong Manh Le Reviewed-by: Dmitri Shuralyov --- src/cmd/compile/internal/reflectdata/alg.go | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) (limited to 'src/cmd/compile/internal/reflectdata/alg.go') diff --git a/src/cmd/compile/internal/reflectdata/alg.go b/src/cmd/compile/internal/reflectdata/alg.go index d46b0cd360..01135de39f 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") -- cgit v1.3