go/src/cmd/compile/internal/ssagen/phi.go

const smallBlocks

const debugPhi

type fwdRefAux

func (fwdRefAux) CanBeAnSSAAux() {}

// insertPhis finds all the places in the function where a phi is
// necessary and inserts them.
// Uses FwdRef ops to find all uses of variables, and s.defvars to find
// all definitions.
// Phi values are inserted, and all FwdRefs are changed to a Copy
// of the appropriate phi or definition.
// TODO: make this part of cmd/compile/internal/ssa somehow?
func (s *state) insertPhis() {}

type phiState

func (s *phiState) insertPhis() {}

func (s *phiState) insertVarPhis(n int, var_ ir.Node, defs []*ssa.Block, typ *types.Type) {}

// resolveFwdRefs links all FwdRef uses up to their nearest dominating definition.
func (s *phiState) resolveFwdRefs() {}

type domBlock

type blockHeap

func (h *blockHeap) Len() int      {}

func (h *blockHeap) Swap(i, j int) {}

func (h *blockHeap) Push(x interface{}

func (h *blockHeap) Pop() interface{}

func (h *blockHeap) Less(i, j int) bool {}

type sparseSet

// newSparseSet returns a sparseSet that can represent
// integers between 0 and n-1.
func newSparseSet(n int) *sparseSet {}

func (s *sparseSet) contains(x ssa.ID) bool {}

func (s *sparseSet) add(x ssa.ID) {}

func (s *sparseSet) clear() {}

type simplePhiState

func (s *simplePhiState) insertPhis() {}

// lookupVarOutgoing finds the variable's value at the end of block b.
func (s *simplePhiState) lookupVarOutgoing(b *ssa.Block, t *types.Type, var_ ir.Node, line src.XPos) *ssa.Value {}