1; RUN: opt < %s -simplifycfg -S | FileCheck %s
2
3declare void @bar()
4
5; This testcase checks to see if the simplifycfg pass is converting invoke
6; instructions to call instructions if the handler just rethrows the exception.
7define i32 @test1() {
8; CHECK: @test1
9; CHECK-NEXT: call void @bar()
10; CHECK-NEXT: ret i32 0
11        invoke void @bar( )
12                        to label %1 unwind label %Rethrow
13        ret i32 0
14Rethrow:
15        unwind
16}
17
18
19; Verify that simplifycfg isn't duplicating 'unwind' instructions.  Doing this
20; is bad because it discourages commoning.
21define i32 @test2(i1 %c) {
22; CHECK: @test2
23; CHECK: T:
24; CHECK-NEXT: call void @bar()
25; CHECK-NEXT: br label %F
26  br i1 %c, label %T, label %F
27T:
28  call void @bar()
29  br label %F
30F:
31  unwind
32}
33