Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 1 | ; RUN: llvm-as < %s | llvm-dis > %t1.ll |
Tanya Lattner | 3f7706b | 2004-11-07 06:08:43 +0000 | [diff] [blame] | 2 | ; RUN: llvm-as %t1.ll -o - | llvm-dis > %t2.ll |
| 3 | ; RUN: diff %t1.ll %t2.ll |
| 4 | |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 5 | ;; This is an irreducible flow graph |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 6 | define void @irreducible(i1 %cond) { |
| 7 | br i1 %cond, label %X, label %Y |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 8 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 9 | X: ; preds = %Y, %0 |
| 10 | br label %Y |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 11 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 12 | Y: ; preds = %X, %0 |
| 13 | br label %X |
| 14 | } |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 15 | |
| 16 | ;; This is a pair of loops that share the same header |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 17 | define void @sharedheader(i1 %cond) { |
| 18 | br label %A |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 19 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 20 | A: ; preds = %Y, %X, %0 |
| 21 | br i1 %cond, label %X, label %Y |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 22 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 23 | X: ; preds = %A |
| 24 | br label %A |
| 25 | |
| 26 | Y: ; preds = %A |
| 27 | br label %A |
| 28 | } |
| 29 | |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 30 | |
| 31 | ;; This is a simple nested loop |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 32 | define void @nested(i1 %cond1, i1 %cond2, i1 %cond3) { |
| 33 | br label %Loop1 |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 34 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 35 | Loop1: ; preds = %L2Exit, %0 |
| 36 | br label %Loop2 |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 37 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 38 | Loop2: ; preds = %L3Exit, %Loop1 |
| 39 | br label %Loop3 |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 40 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 41 | Loop3: ; preds = %Loop3, %Loop2 |
| 42 | br i1 %cond3, label %Loop3, label %L3Exit |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 43 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 44 | L3Exit: ; preds = %Loop3 |
| 45 | br i1 %cond2, label %Loop2, label %L2Exit |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 46 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 47 | L2Exit: ; preds = %L3Exit |
| 48 | br i1 %cond1, label %Loop1, label %L1Exit |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 49 | |
Tanya Lattner | 9bc243b | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 50 | L1Exit: ; preds = %L2Exit |
| 51 | ret void |
| 52 | } |
Chris Lattner | 13d38cd | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 53 | |