inline

package standard library
go1.23rc1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 21, 2024 License: BSD-3-Clause Imports: 13 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var InlineCall = func(callerfn *ir.Func, call *ir.CallExpr, fn *ir.Func, inlIndex int) *ir.InlinedCallExpr {
	base.Fatalf("inline.InlineCall not overridden")
	panic("unreachable")
}

InlineCall allows the inliner implementation to be overridden. If it returns nil, the function will not be inlined.

View Source
var SSADumpInline = func(*ir.Func) {}

SSADumpInline gives the SSA back end a chance to dump the function when producing output for debugging the compiler itself.

Functions

func CalleeEffects added in go1.18

func CalleeEffects(init *ir.Nodes, callee ir.Node)

CalleeEffects appends any side effects from evaluating callee to init.

func CanInline

func CanInline(fn *ir.Func, profile *pgoir.Profile)

CanInline determines whether fn is inlineable. If so, CanInline saves copies of fn.Body and fn.Dcl in fn.Inl. fn and fn.Body will already have been typechecked.

func CanInlineFuncs added in go1.22.0

func CanInlineFuncs(funcs []*ir.Func, profile *pgoir.Profile)

CanInlineFuncs computes whether a batch of functions are inlinable.

func GarbageCollectUnreferencedHiddenClosures added in go1.22.0

func GarbageCollectUnreferencedHiddenClosures()

GarbageCollectUnreferencedHiddenClosures makes a pass over all the top-level (non-hidden-closure) functions looking for nested closure functions that are reachable, then sweeps through the Target.Decls list and marks any non-reachable hidden closure function as dead. See issues #59404 and #59638 for more context.

func HasPgoHotInline added in go1.23.0

func HasPgoHotInline(fn *ir.Func) bool

func InlineImpossible added in go1.21.0

func InlineImpossible(fn *ir.Func) string

InlineImpossible returns a non-empty reason string if fn is impossible to inline regardless of cost or contents.

func IsBigFunc added in go1.22.0

func IsBigFunc(fn *ir.Func) bool

IsBigFunc reports whether fn is a "big" function.

Note: The criteria for "big" is heuristic and subject to change.

func IsPgoHotFunc added in go1.23.0

func IsPgoHotFunc(fn *ir.Func, profile *pgoir.Profile) bool

func PGOInlinePrologue added in go1.22.0

func PGOInlinePrologue(p *pgoir.Profile)

PGOInlinePrologue records the hot callsites from ir-graph.

func PostProcessCallSites added in go1.22.0

func PostProcessCallSites(profile *pgoir.Profile)

func TryInlineCall added in go1.22.0

func TryInlineCall(callerfn *ir.Func, call *ir.CallExpr, bigCaller bool, profile *pgoir.Profile) *ir.InlinedCallExpr

TryInlineCall returns an inlined call expression for call, or nil if inlining is not possible.

Types

This section is empty.

Directories

Path Synopsis
Package interleaved implements the interleaved devirtualization and inlining pass.
Package interleaved implements the interleaved devirtualization and inlining pass.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL