blob: 83a9fa7ad1b8da349ba0e1bf8c576c2177efac7e [file] [log] [blame]
Chris Lattner24c31de2009-12-22 06:04:26 +00001; Test CFG simplify removal of branch instructions.
Dan Gohmanf17a25c2007-07-18 16:29:46 +00002;
Chris Lattner24c31de2009-12-22 06:04:26 +00003; RUN: opt < %s -simplifycfg -S | FileCheck %s
Dan Gohmanf17a25c2007-07-18 16:29:46 +00004
Tanya Lattnerb46665e2008-03-18 03:45:45 +00005define void @test1() {
6 br label %BB1
7BB1: ; preds = %0
8 ret void
Chris Lattner24c31de2009-12-22 06:04:26 +00009; CHECK: @test1
10; CHECK-NEXT: ret void
Dan Gohmanf17a25c2007-07-18 16:29:46 +000011}
12
Tanya Lattnerb46665e2008-03-18 03:45:45 +000013define void @test2() {
14 ret void
15BB1: ; No predecessors!
16 ret void
Chris Lattner24c31de2009-12-22 06:04:26 +000017; CHECK: @test2
18; CHECK-NEXT: ret void
19; CHECK-NEXT: }
Dan Gohmanf17a25c2007-07-18 16:29:46 +000020}
21
Tanya Lattnerb46665e2008-03-18 03:45:45 +000022define void @test3(i1 %T) {
23 br i1 %T, label %BB1, label %BB1
24BB1: ; preds = %0, %0
25 ret void
Chris Lattner24c31de2009-12-22 06:04:26 +000026; CHECK: @test3
27; CHECK-NEXT: ret void
Dan Gohmanf17a25c2007-07-18 16:29:46 +000028}
29
30
Chris Lattnerec080e72009-10-30 22:39:36 +000031define void @test4() {
Chris Lattner24c31de2009-12-22 06:04:26 +000032 br label %return
Chris Lattnerec080e72009-10-30 22:39:36 +000033return:
Chris Lattner24c31de2009-12-22 06:04:26 +000034 ret void
35; CHECK: @test4
36; CHECK-NEXT: ret void
Chris Lattnerec080e72009-10-30 22:39:36 +000037}
38@test4g = global i8* blockaddress(@test4, %return)
Chris Lattner24c31de2009-12-22 06:04:26 +000039
40
Chris Lattner43abe692009-12-22 06:07:30 +000041; PR5795
42define void @test5(i32 %A) {
43 switch i32 %A, label %return [
44 i32 2, label %bb
45 i32 10, label %bb1
46 ]
47
48bb: ; preds = %entry
49 ret void
50
51bb1: ; preds = %entry
52 ret void
53
54return: ; preds = %entry
55 ret void
56; CHECK: @test5
57; CHECK-NEXT: bb:
58; CHECK-NEXT: ret void
59}