]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: fix missing typecheck when rewriting abi.FuncPCABIxxx
authorCuong Manh Le <cuong.manhle.vn@gmail.com>
Sun, 21 Aug 2022 15:52:36 +0000 (22:52 +0700)
committerGopher Robot <gobot@golang.org>
Mon, 22 Aug 2022 22:29:15 +0000 (22:29 +0000)
Discover when running "go test -run=TestNewOSProc0 -gcflags=-d=checkptr"

Change-Id: I988da56fd3122a21673e86d7dd327ed05914ab72
Reviewed-on: https://go-review.googlesource.com/c/go/+/425040
TryBot-Result: Gopher Robot <gobot@golang.org>
Auto-Submit: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Run-TryBot: Cuong Manh Le <cuong.manhle.vn@gmail.com>
Reviewed-by: Matthew Dempsky <mdempsky@google.com>
Reviewed-by: Cherry Mui <cherryyz@google.com>
src/cmd/compile/internal/walk/expr.go

index dfa82e7ec03cc5610555610f194b368490196faa..c80bc3d80bf3df7d4b9ca3d34e191eb12ba16ab0 100644 (file)
@@ -545,8 +545,7 @@ func walkCall(n *ir.CallExpr, init *ir.Nodes) ir.Node {
                        var e ir.Node = ir.NewLinksymExpr(n.Pos(), fn.Sym().LinksymABI(abi), types.Types[types.TUINTPTR])
                        e = ir.NewAddrExpr(n.Pos(), e)
                        e.SetType(types.Types[types.TUINTPTR].PtrTo())
-                       e = ir.NewConvExpr(n.Pos(), ir.OCONVNOP, n.Type(), e)
-                       return e
+                       return typecheck.Expr(ir.NewConvExpr(n.Pos(), ir.OCONVNOP, n.Type(), e))
                }
                // fn is not a defined function. It must be ABIInternal.
                // Read the address from func value, i.e. *(*uintptr)(idata(fn)).
@@ -556,8 +555,10 @@ func walkCall(n *ir.CallExpr, init *ir.Nodes) ir.Node {
                arg = walkExpr(arg, init)
                var e ir.Node = ir.NewUnaryExpr(n.Pos(), ir.OIDATA, arg)
                e.SetType(n.Type().PtrTo())
+               e.SetTypecheck(1)
                e = ir.NewStarExpr(n.Pos(), e)
                e.SetType(n.Type())
+               e.SetTypecheck(1)
                return e
        }