1*5366de73SArthur Eubanks; RUN: opt -passes=simple-loop-unswitch -enable-nontrivial-unswitch < %s -S | FileCheck %s
2*5366de73SArthur Eubanks
3*5366de73SArthur Eubanks; CHECK: if.end{{.*}}:
4*5366de73SArthur Eubanks; CHECK-NOT: if.end{{.*}}:
5*5366de73SArthur Eubanksdeclare i32 @__gxx_wasm_personality_v0(...)
6*5366de73SArthur Eubanks
7*5366de73SArthur Eubanksdeclare void @foo()
8*5366de73SArthur Eubanks
9*5366de73SArthur Eubanksdefine void @test(i1 %arg) personality i8* bitcast (i32 (...)* @__gxx_wasm_personality_v0 to i8*) {
10*5366de73SArthur Eubanksentry:
11*5366de73SArthur Eubanks  br label %while.body
12*5366de73SArthur Eubanks
13*5366de73SArthur Eubankswhile.body:                                       ; preds = %cleanup, %entry
14*5366de73SArthur Eubanks  br i1 %arg, label %if.end, label %if.then
15*5366de73SArthur Eubanks
16*5366de73SArthur Eubanksif.then:                                          ; preds = %while.body
17*5366de73SArthur Eubanks  br label %if.end
18*5366de73SArthur Eubanks
19*5366de73SArthur Eubanksif.end:                                           ; preds = %if.then, %while.body
20*5366de73SArthur Eubanks  invoke void @foo()
21*5366de73SArthur Eubanks          to label %cleanup unwind label %catch.dispatch
22*5366de73SArthur Eubanks
23*5366de73SArthur Eubankscatch.dispatch:                                   ; preds = %invoke.cont, %if.end
24*5366de73SArthur Eubanks  %0 = catchswitch within none [label %catch] unwind to caller
25*5366de73SArthur Eubanks
26*5366de73SArthur Eubankscatch:                                            ; preds = %catch.dispatch
27*5366de73SArthur Eubanks  %1 = catchpad within %0 [i8* null]
28*5366de73SArthur Eubanks  unreachable
29*5366de73SArthur Eubanks
30*5366de73SArthur Eubankscleanup:                                          ; preds = %invoke.cont
31*5366de73SArthur Eubanks  br label %while.body
32*5366de73SArthur Eubanks}
33*5366de73SArthur Eubanks
34