diff options
| author | Cuong Manh Le <cuong.manhle.vn@gmail.com> | 2022-08-21 22:52:36 +0700 |
|---|---|---|
| committer | Gopher Robot <gobot@golang.org> | 2022-08-22 22:29:15 +0000 |
| commit | ae303ff282feed715de0374890737ccdaee1e053 (patch) | |
| tree | 7f29157845044b6640142a05dcbba66f7286d73f /src | |
| parent | 8bf9e014736064de436c411a95467b583f430dea (diff) | |
| download | go-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.go | 5 |
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 } |
