]> Cypherpunks repositories - gostls13.git/commitdiff
cmd/compile: make sure build works when intrinsics are disabled
authorCherry Zhang <cherryyz@google.com>
Fri, 31 May 2019 21:11:50 +0000 (17:11 -0400)
committerCherry Zhang <cherryyz@google.com>
Fri, 31 May 2019 21:27:59 +0000 (21:27 +0000)
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 <cherryyz@google.com>
Run-TryBot: Austin Clements <austin@google.com>
Reviewed-by: Austin Clements <austin@google.com>
TryBot-Result: Gobot Gobot <gobot@golang.org>

src/cmd/compile/internal/gc/ssa.go

index f9ccf84f720e5ecc6a21a7128f1afa07bab9ef58..8637d725ada80395b296a63da11abe606410d713 100644 (file)
@@ -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}]
 }