From eac1f3e46115b42e564b4160ae38fec9872e68d0 Mon Sep 17 00:00:00 2001 From: Than McIntosh Date: Tue, 1 Aug 2023 12:04:12 -0400 Subject: [PATCH] cmd/compile/internal/inl: use func-level "never returns" flag Make use of the "never returns" flag bit in ir.Func when computing function properties: update the bit when we're done looking at a given function, and read the bit from imported functions during flag analysis. The advantage of using the ir.Func flag is that it will get set (and will propagate through to export data) for all functions, nost just those that are inline candidates. Change-Id: I7002364b2c4ff5424ed70748fad87fad1a9e4786 Reviewed-on: https://go-review.googlesource.com/c/go/+/518257 LUCI-TryBot-Result: Go LUCI Reviewed-by: Matthew Dempsky --- src/cmd/compile/internal/inline/inlheur/analyze.go | 1 + src/cmd/compile/internal/inline/inlheur/analyze_func_flags.go | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/src/cmd/compile/internal/inline/inlheur/analyze.go b/src/cmd/compile/internal/inline/inlheur/analyze.go index 78a6cc5325..325063fed5 100644 --- a/src/cmd/compile/internal/inline/inlheur/analyze.go +++ b/src/cmd/compile/internal/inline/inlheur/analyze.go @@ -76,6 +76,7 @@ func AnalyzeFunc(fn *ir.Func, canInline func(*ir.Func)) *FuncProps { if err := cstab.merge(fcstab); err != nil { base.FatalfAt(fn.Pos(), "%v", err) } + fn.SetNeverReturns(entry.props.Flags&FuncPropNeverReturns != 0) fpmap[fn] = entry if fn.Inl != nil && fn.Inl.Properties == "" { fn.Inl.Properties = entry.props.SerializeToString() diff --git a/src/cmd/compile/internal/inline/inlheur/analyze_func_flags.go b/src/cmd/compile/internal/inline/inlheur/analyze_func_flags.go index 463fa36a69..15f5bd5f35 100644 --- a/src/cmd/compile/internal/inline/inlheur/analyze_func_flags.go +++ b/src/cmd/compile/internal/inline/inlheur/analyze_func_flags.go @@ -194,7 +194,7 @@ func isExitCall(n ir.Node) bool { return true } } - return false + return name.Func.NeverReturns() } // pessimize is called to record the fact that we saw something in the -- 2.50.0