From c7085329367e14f0aa828a3793cf66d9f82f05c2 Mon Sep 17 00:00:00 2001 From: cuiweixie Date: Tue, 16 Aug 2022 17:52:13 +0800 Subject: cmd/compile: add support for unsafe.{String,StringData,SliceData} For #53003 Change-Id: I13a761daca8b433b271a1feb711c103d9820772d Reviewed-on: https://go-review.googlesource.com/c/go/+/423774 Reviewed-by: Heschi Kreinick Reviewed-by: Matthew Dempsky Reviewed-by: hopehook Reviewed-by: Cuong Manh Le Reviewed-by: Keith Randall Run-TryBot: Matthew Dempsky TryBot-Result: Gopher Robot --- src/cmd/compile/internal/noder/transform.go | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'src/cmd/compile/internal/noder/transform.go') diff --git a/src/cmd/compile/internal/noder/transform.go b/src/cmd/compile/internal/noder/transform.go index 87068a9412..15adb89e5f 100644 --- a/src/cmd/compile/internal/noder/transform.go +++ b/src/cmd/compile/internal/noder/transform.go @@ -900,7 +900,7 @@ func transformBuiltin(n *ir.CallExpr) ir.Node { transformArgs(n) fallthrough - case ir.ONEW, ir.OALIGNOF, ir.OOFFSETOF, ir.OSIZEOF: + case ir.ONEW, ir.OALIGNOF, ir.OOFFSETOF, ir.OSIZEOF, ir.OUNSAFESLICEDATA, ir.OUNSAFESTRINGDATA: u := ir.NewUnaryExpr(n.Pos(), op, n.Args[0]) u1 := typed(n.Type(), ir.InitExpr(n.Init(), u)) // typecheckargs can add to old.Init switch op { @@ -913,12 +913,12 @@ func transformBuiltin(n *ir.CallExpr) ir.Node { case ir.OALIGNOF, ir.OOFFSETOF, ir.OSIZEOF: // This corresponds to the EvalConst() call near end of typecheck(). return typecheck.EvalConst(u1) - case ir.OCLOSE, ir.ONEW: + case ir.OCLOSE, ir.ONEW, ir.OUNSAFESTRINGDATA, ir.OUNSAFESLICEDATA: // nothing more to do return u1 } - case ir.OCOMPLEX, ir.OCOPY, ir.OUNSAFEADD, ir.OUNSAFESLICE: + case ir.OCOMPLEX, ir.OCOPY, ir.OUNSAFEADD, ir.OUNSAFESLICE, ir.OUNSAFESTRING: transformArgs(n) b := ir.NewBinaryExpr(n.Pos(), op, n.Args[0], n.Args[1]) n1 := typed(n.Type(), ir.InitExpr(n.Init(), b)) -- cgit v1.3-5-g9baa