xref: /llvm-project/llvm/test/Transforms/SimpleLoopUnswitch/catchswitch.ll (revision 2f79f5438cd6f4fa0fdc32458911c2d163f917c0)
192e54b09SRoman Lebedev; RUN: opt -passes='simple-loop-unswitch<nontrivial>' < %s -S | FileCheck %s
25366de73SArthur Eubanks
35366de73SArthur Eubanks; CHECK: if.end{{.*}}:
45366de73SArthur Eubanks; CHECK-NOT: if.end{{.*}}:
55366de73SArthur Eubanksdeclare i32 @__gxx_wasm_personality_v0(...)
65366de73SArthur Eubanks
75366de73SArthur Eubanksdeclare void @foo()
85366de73SArthur Eubanks
9*2f79f543SNikita Popovdefine void @test(i1 %arg) personality ptr @__gxx_wasm_personality_v0 {
105366de73SArthur Eubanksentry:
115366de73SArthur Eubanks  br label %while.body
125366de73SArthur Eubanks
135366de73SArthur Eubankswhile.body:                                       ; preds = %cleanup, %entry
145366de73SArthur Eubanks  br i1 %arg, label %if.end, label %if.then
155366de73SArthur Eubanks
165366de73SArthur Eubanksif.then:                                          ; preds = %while.body
175366de73SArthur Eubanks  br label %if.end
185366de73SArthur Eubanks
195366de73SArthur Eubanksif.end:                                           ; preds = %if.then, %while.body
205366de73SArthur Eubanks  invoke void @foo()
215366de73SArthur Eubanks          to label %cleanup unwind label %catch.dispatch
225366de73SArthur Eubanks
235366de73SArthur Eubankscatch.dispatch:                                   ; preds = %invoke.cont, %if.end
245366de73SArthur Eubanks  %0 = catchswitch within none [label %catch] unwind to caller
255366de73SArthur Eubanks
265366de73SArthur Eubankscatch:                                            ; preds = %catch.dispatch
27*2f79f543SNikita Popov  %1 = catchpad within %0 [ptr null]
285366de73SArthur Eubanks  unreachable
295366de73SArthur Eubanks
305366de73SArthur Eubankscleanup:                                          ; preds = %invoke.cont
315366de73SArthur Eubanks  br label %while.body
325366de73SArthur Eubanks}
335366de73SArthur Eubanks
34