func TestLabelTarget(t *testing.T) { … }
func TestLabelTargetDuplicate(t *testing.T) { … }
func TestLabelTargetEndsWithLabel(t *testing.T) { … }
func TestLabelTargetConsecutiveLabels(t *testing.T) { … }
func TestCFGSingleBasicBlock(t *testing.T) { … }
func TestCFGCondBranch(t *testing.T) { … }
func TestCFGUncondBranch(t *testing.T) { … }
func TestCFGJumpForward(t *testing.T) { … }
func TestCFGMultiReturn(t *testing.T) { … }
func TestCFGShortLoop(t *testing.T) { … }
func TestCFGUndefinedLabel(t *testing.T) { … }
func TestCFGMissingLabel(t *testing.T) { … }
func Terminal(opcode string) *ir.Instruction { … }
func CondBranch(opcode, lbl string) *ir.Instruction { … }
func UncondBranch(opcode, lbl string) *ir.Instruction { … }
func ComputeCFG(t *testing.T, f *ir.Function) error { … }
func AssertSuccessors(t *testing.T, f *ir.Function, expect map[string][]string) { … }
func AssertPredecessors(t *testing.T, f *ir.Function, expect map[string][]string) { … }
func AssertEqual(t *testing.T, what string, got, expect interface{ … }
func OpcodeSuccessorGraph(f *ir.Function) map[string][]string { … }
func OpcodePredecessorGraph(f *ir.Function) map[string][]string { … }
func OpcodeGraph(f *ir.Function, neighbors func(*ir.Instruction) []*ir.Instruction) map[string][]string { … }