// PruneJumpToFollowingLabel removes jump instructions that target an // immediately following label. func PruneJumpToFollowingLabel(fn *ir.Function) error { … } // PruneDanglingLabels removes labels that are not referenced by any branches. func PruneDanglingLabels(fn *ir.Function) error { … } // PruneSelfMoves removes move instructions from one register to itself. func PruneSelfMoves(fn *ir.Function) error { … } // removeinstructions deletes instructions from the given function which match predicate. func removeinstructions(fn *ir.Function, predicate func(*ir.Instruction) bool) error { … } // deletenode deletes node i from nodes and returns the resulting slice. func deletenode(nodes []ir.Node, i int) []ir.Node { … } // invalidatecfg clears CFG structures. func invalidatecfg(fn *ir.Function) { … }