blob: 09aec1fed219576adb32a896fadf26a3b58b7bf2 [file] [log] [blame]
Reid Spencerc0948362007-01-16 18:08:22 +00001; RUN: llvm-as %s -o - | llvm-dis > %t1.ll
2; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll
3; RUN: diff %t1.ll %t2.ll
4
Reid Spencerc0948362007-01-16 18:08:22 +00005
6;; This is an irreducible flow graph
7
8
Reid Spencere3ff5ad2007-01-26 08:25:06 +00009define void @"irreducible"(i1 %cond)
Reid Spencerc0948362007-01-16 18:08:22 +000010begin
11 br i1 %cond, label %X, label %Y
12
13X:
14 br label %Y
15Y:
16 br label %X
17end
18
19;; This is a pair of loops that share the same header
20
Reid Spencere3ff5ad2007-01-26 08:25:06 +000021define void @"sharedheader"(i1 %cond)
Reid Spencerc0948362007-01-16 18:08:22 +000022begin
23 br label %A
24A:
25 br i1 %cond, label %X, label %Y
26
27X:
28 br label %A
29Y:
30 br label %A
31end
32
33;; This is a simple nested loop
Reid Spencere3ff5ad2007-01-26 08:25:06 +000034define void @"nested"(i1 %cond1, i1 %cond2, i1 %cond3)
Reid Spencerc0948362007-01-16 18:08:22 +000035begin
36 br label %Loop1
37
38Loop1:
39 br label %Loop2
40
41Loop2:
42 br label %Loop3
43
44Loop3:
45 br i1 %cond3, label %Loop3, label %L3Exit
46
47L3Exit:
48 br i1 %cond2, label %Loop2, label %L2Exit
49
50L2Exit:
51 br i1 %cond1, label %Loop1, label %L1Exit
52
53L1Exit:
54 ret void
55end
56