inline

package
v1.23.0 Latest Latest
Warning

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

Go to latest
Published: Aug 14, 2024 License: MIT Imports: 3 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

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 v1.22.0

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

CanInlineFuncs computes whether a batch of functions are inlinable.

func HasPgoHotInline added in v1.23.0

func HasPgoHotInline(fn *ir.Func) bool

func InlineImpossible

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 v1.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 v1.23.0

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

func PGOInlinePrologue added in v1.22.0

func PGOInlinePrologue(p *pgoir.Profile)

PGOInlinePrologue records the hot callsites from ir-graph.

func PostProcessCallSites added in v1.22.0

func PostProcessCallSites(profile *pgoir.Profile)

func TryInlineCall added in v1.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