aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorCuong Manh Le <cuong.manhle.vn@gmail.com>2022-08-21 22:52:36 +0700
committerGopher Robot <gobot@golang.org>2022-08-22 22:29:15 +0000
commitae303ff282feed715de0374890737ccdaee1e053 (patch)
tree7f29157845044b6640142a05dcbba66f7286d73f /src
parent8bf9e014736064de436c411a95467b583f430dea (diff)
downloadgo-ae303ff282feed715de0374890737ccdaee1e053.tar.xz
cmd/compile: fix missing typecheck when rewriting abi.FuncPCABIxxx
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>
Diffstat (limited to 'src')
-rw-r--r--src/cmd/compile/internal/walk/expr.go5
1 files changed, 3 insertions, 2 deletions
diff --git a/src/cmd/compile/internal/walk/expr.go b/src/cmd/compile/internal/walk/expr.go
index dfa82e7ec0..c80bc3d80b 100644
--- a/src/cmd/compile/internal/walk/expr.go
+++ b/src/cmd/compile/internal/walk/expr.go
@@ -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
}