Files
avo/ir/ir_test.go
Michael McLoughlin 2e7d06bc7a pass: remove redundant jumps and dangling labels (#81)
In jump-table-like constructs, the natural way of writing the code can sometimes produce redundant jumps or labels. Therefore some basic cleanup steps have been proposed. This diff adds two transforms:

1. Remove unconditional jumps to a label immediately following.
2. Remove labels with no references at all.

Fixes #75
2019-04-15 19:42:11 -07:00

23 lines
452 B
Go

package ir
import (
"reflect"
"testing"
)
func TestFunctionLabels(t *testing.T) {
f := NewFunction("labels")
f.AddInstruction(&Instruction{})
f.AddLabel("a")
f.AddInstruction(&Instruction{})
f.AddLabel("b")
f.AddInstruction(&Instruction{})
f.AddLabel("c")
f.AddInstruction(&Instruction{})
expect := []Label{"a", "b", "c"}
if got := f.Labels(); !reflect.DeepEqual(expect, got) {
t.Fatalf("f.Labels() = %v; expect %v", got, expect)
}
}