Chris Lattner | 24c31de | 2009-12-22 06:04:26 +0000 | [diff] [blame] | 1 | ; Test CFG simplify removal of branch instructions. |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 2 | ; |
Chris Lattner | 24c31de | 2009-12-22 06:04:26 +0000 | [diff] [blame] | 3 | ; RUN: opt < %s -simplifycfg -S | FileCheck %s |
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 4 | |
Tanya Lattner | b46665e | 2008-03-18 03:45:45 +0000 | [diff] [blame] | 5 | define void @test1() { |
6 | br label %BB1 | ||||
7 | BB1: ; preds = %0 | ||||
8 | ret void | ||||
Chris Lattner | 24c31de | 2009-12-22 06:04:26 +0000 | [diff] [blame] | 9 | ; CHECK: @test1 |
10 | ; CHECK-NEXT: ret void | ||||
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 11 | } |
12 | |||||
Tanya Lattner | b46665e | 2008-03-18 03:45:45 +0000 | [diff] [blame] | 13 | define void @test2() { |
14 | ret void | ||||
15 | BB1: ; No predecessors! | ||||
16 | ret void | ||||
Chris Lattner | 24c31de | 2009-12-22 06:04:26 +0000 | [diff] [blame] | 17 | ; CHECK: @test2 |
18 | ; CHECK-NEXT: ret void | ||||
19 | ; CHECK-NEXT: } | ||||
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 20 | } |
21 | |||||
Tanya Lattner | b46665e | 2008-03-18 03:45:45 +0000 | [diff] [blame] | 22 | define void @test3(i1 %T) { |
23 | br i1 %T, label %BB1, label %BB1 | ||||
24 | BB1: ; preds = %0, %0 | ||||
25 | ret void | ||||
Chris Lattner | 24c31de | 2009-12-22 06:04:26 +0000 | [diff] [blame] | 26 | ; CHECK: @test3 |
27 | ; CHECK-NEXT: ret void | ||||
Dan Gohman | f17a25c | 2007-07-18 16:29:46 +0000 | [diff] [blame] | 28 | } |
29 | |||||
30 | |||||
Chris Lattner | ec080e7 | 2009-10-30 22:39:36 +0000 | [diff] [blame] | 31 | define void @test4() { |
Chris Lattner | 24c31de | 2009-12-22 06:04:26 +0000 | [diff] [blame] | 32 | br label %return |
Chris Lattner | ec080e7 | 2009-10-30 22:39:36 +0000 | [diff] [blame] | 33 | return: |
Chris Lattner | 24c31de | 2009-12-22 06:04:26 +0000 | [diff] [blame] | 34 | ret void |
35 | ; CHECK: @test4 | ||||
36 | ; CHECK-NEXT: ret void | ||||
Chris Lattner | ec080e7 | 2009-10-30 22:39:36 +0000 | [diff] [blame] | 37 | } |
38 | @test4g = global i8* blockaddress(@test4, %return) | ||||
Chris Lattner | 24c31de | 2009-12-22 06:04:26 +0000 | [diff] [blame] | 39 | |
40 | |||||
Chris Lattner | 43abe69 | 2009-12-22 06:07:30 +0000 | [diff] [blame] | 41 | ; PR5795 |
42 | define void @test5(i32 %A) { | ||||
43 | switch i32 %A, label %return [ | ||||
44 | i32 2, label %bb | ||||
45 | i32 10, label %bb1 | ||||
46 | ] | ||||
47 | |||||
48 | bb: ; preds = %entry | ||||
49 | ret void | ||||
50 | |||||
51 | bb1: ; preds = %entry | ||||
52 | ret void | ||||
53 | |||||
54 | return: ; preds = %entry | ||||
55 | ret void | ||||
56 | ; CHECK: @test5 | ||||
57 | ; CHECK-NEXT: bb: | ||||
58 | ; CHECK-NEXT: ret void | ||||
59 | } |