From 9fbfe7cca00a456541e9aa2b2cc1251d777f325b Mon Sep 17 00:00:00 2001 From: David Lazar Date: Wed, 30 Nov 2016 17:09:07 -0500 Subject: [PATCH] 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 --- src/cmd/compile/internal/gc/inl.go | 6 ++++++ 1 file changed, 6 insertions(+) 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" -- 2.48.1