| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 1 | ; RUN: llvm-as < %s | llvm-dis > %t1.ll | 
| Tanya Lattner | 84f7fda | 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 | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 5 | ;; This is an irreducible flow graph | 
| Tanya Lattner | b7e02fc | 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 | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 8 |  | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 9 | X:              ; preds = %Y, %0 | 
|  | 10 | br label %Y | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 11 |  | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 12 | Y:              ; preds = %X, %0 | 
|  | 13 | br label %X | 
|  | 14 | } | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 15 |  | 
|  | 16 | ;; This is a pair of loops that share the same header | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 17 | define void @sharedheader(i1 %cond) { | 
|  | 18 | br label %A | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 19 |  | 
| Tanya Lattner | b7e02fc | 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 | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 22 |  | 
| Tanya Lattner | b7e02fc | 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 | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 30 |  | 
|  | 31 | ;; This is a simple nested loop | 
| Tanya Lattner | b7e02fc | 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 | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 34 |  | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 35 | Loop1:          ; preds = %L2Exit, %0 | 
|  | 36 | br label %Loop2 | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 37 |  | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 38 | Loop2:          ; preds = %L3Exit, %Loop1 | 
|  | 39 | br label %Loop3 | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 40 |  | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 41 | Loop3:          ; preds = %Loop3, %Loop2 | 
|  | 42 | br i1 %cond3, label %Loop3, label %L3Exit | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 43 |  | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 44 | L3Exit:         ; preds = %Loop3 | 
|  | 45 | br i1 %cond2, label %Loop2, label %L2Exit | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 46 |  | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 47 | L2Exit:         ; preds = %L3Exit | 
|  | 48 | br i1 %cond1, label %Loop1, label %L1Exit | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 49 |  | 
| Tanya Lattner | b7e02fc | 2008-03-01 07:38:40 +0000 | [diff] [blame] | 50 | L1Exit:         ; preds = %L2Exit | 
|  | 51 | ret void | 
|  | 52 | } | 
| Chris Lattner | 275cb9e | 2001-11-26 19:16:37 +0000 | [diff] [blame] | 53 |  |