From: David Lazar Date: Wed, 30 Nov 2016 22:09:07 +0000 (-0500) Subject: cmd/compile: do not inline functions marked cgo_unsafe_args X-Git-Tag: go1.8beta2~123 X-Git-Url: http://www.git.cypherpunks.su/?a=commitdiff_plain;h=9fbfe7cca00a456541e9aa2b2cc1251d777f325b;p=gostls13.git cmd/compile: do not inline functions marked cgo_unsafe_args Now the net tests pass with -gcflags '-l=4'. Fixes #18125. Change-Id: I4e3a46eb0cb3a93b203e74f5bc99c5822331f535 Reviewed-on: https://go-review.googlesource.com/33722 Reviewed-by: Keith Randall --- diff --git a/src/cmd/compile/internal/gc/inl.go b/src/cmd/compile/internal/gc/inl.go index d8f1f24536..7b2fcf89ba 100644 --- a/src/cmd/compile/internal/gc/inl.go +++ b/src/cmd/compile/internal/gc/inl.go @@ -107,6 +107,12 @@ func caninl(fn *Node) { return } + // If marked "go:cgo_unsafe_args", don't inline + if fn.Func.Pragma&CgoUnsafeArgs != 0 { + reason = "marked go:cgo_unsafe_args" + return + } + // If fn has no body (is defined outside of Go), cannot inline it. if fn.Nbody.Len() == 0 { reason = "no function body"