From c10db03cbe152c0851a0794fe230c4b40bbdbd82 Mon Sep 17 00:00:00 2001 From: Cherry Zhang Date: Fri, 31 May 2019 17:11:50 -0400 Subject: [PATCH] cmd/compile: make sure build works when intrinsics are disabled Some runtime functions, like getcallerpc/sp, don't have Go or assembly implementations and have to be intrinsified. Make sure they are, even if intrinsics are disabled. This makes "go build -gcflags=all=-d=ssa/intrinsics/off hello.go" work. Change-Id: I77caaed7715d3ca7ffef68a3cdc9357f095c6b9f Reviewed-on: https://go-review.googlesource.com/c/go/+/179897 Run-TryBot: Cherry Zhang Run-TryBot: Austin Clements Reviewed-by: Austin Clements TryBot-Result: Gobot Gobot --- src/cmd/compile/internal/gc/ssa.go | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/cmd/compile/internal/gc/ssa.go b/src/cmd/compile/internal/gc/ssa.go index f9ccf84f72..8637d725ad 100644 --- a/src/cmd/compile/internal/gc/ssa.go +++ b/src/cmd/compile/internal/gc/ssa.go @@ -3658,9 +3658,6 @@ func init() { // findIntrinsic returns a function which builds the SSA equivalent of the // function identified by the symbol sym. If sym is not an intrinsic call, returns nil. func findIntrinsic(sym *types.Sym) intrinsicBuilder { - if ssa.IntrinsicsDisable { - return nil - } if sym == nil || sym.Pkg == nil { return nil } @@ -3680,6 +3677,13 @@ func findIntrinsic(sym *types.Sym) intrinsicBuilder { } fn := sym.Name + if ssa.IntrinsicsDisable { + if pkg == "runtime" && (fn == "getcallerpc" || fn == "getcallersp" || fn == "getclosureptr") { + // These runtime functions don't have definitions, must be intrinsics. + } else { + return nil + } + } return intrinsics[intrinsicKey{thearch.LinkArch.Arch, pkg, fn}] } -- 2.50.0