Chris Lattner | ceb536e | 2003-03-05 20:35:24 +0000 | [diff] [blame] | 1 | ; Test merging of blocks with phi nodes. |
| 2 | ; |
Tanya Lattner | f04d8d1 | 2008-03-18 03:45:45 +0000 | [diff] [blame^] | 3 | ; RUN: llvm-as < %s | opt -simplifycfg | llvm-dis | not grep N: |
Chris Lattner | ceb536e | 2003-03-05 20:35:24 +0000 | [diff] [blame] | 4 | ; |
| 5 | |
Tanya Lattner | f04d8d1 | 2008-03-18 03:45:45 +0000 | [diff] [blame^] | 6 | define i32 @test(i1 %a) { |
Chris Lattner | ceb536e | 2003-03-05 20:35:24 +0000 | [diff] [blame] | 7 | Q: |
Tanya Lattner | f04d8d1 | 2008-03-18 03:45:45 +0000 | [diff] [blame^] | 8 | br i1 %a, label %N, label %M |
| 9 | N: ; preds = %Q |
| 10 | br label %M |
| 11 | M: ; preds = %N, %Q |
| 12 | ; It's ok to merge N and M because the incoming values for W are the |
Chris Lattner | ceb536e | 2003-03-05 20:35:24 +0000 | [diff] [blame] | 13 | ; same for both cases... |
Tanya Lattner | f04d8d1 | 2008-03-18 03:45:45 +0000 | [diff] [blame^] | 14 | %W = phi i32 [ 2, %N ], [ 2, %Q ] ; <i32> [#uses=1] |
| 15 | %R = add i32 %W, 1 ; <i32> [#uses=1] |
| 16 | ret i32 %R |
Chris Lattner | ceb536e | 2003-03-05 20:35:24 +0000 | [diff] [blame] | 17 | } |
| 18 | |