summary refs log tree commit diff
path: root/test/_alt.ssa
blob: 3f89e5e266c3569f8e2b4eea0bb78b82c5e6cb10 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
# an example with reducible control
# flow graph that exposes poor
# handling of looping constructs

function $test() {
@start
	%ten =w copy 10
	%dum =w copy 0  # dummy live-through temporary
@loop
	%alt =w phi @start 0, @left %alt1, @right %alt1
	%cnt =w phi @start 100, @left %cnt, @right %cnt1
	%alt1 =w sub 1, %alt
	jnz %alt1, @right, @left
@left
	%x =w phi @loop 10, @left %x1
	%x1 =w sub %x, 1
	%z =w copy %x
	jnz %z, @left, @loop
@right
	%cnt1 =w sub %cnt, %ten
	jnz %cnt1, @loop, @end
@end
	%ret =w add %cnt, %dum
	ret
}