[AArch64][NFC] NFC for const vector as Instruction operand (#116790)
[llvm-project.git] / llvm / test / Transforms / MoveAutoInit / catchswitch.ll
blob25526eb3e7bfe80b209b869f05bae1d468dcadc1
1 ; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
2 ; RUN: opt < %s -S -passes='move-auto-init' -verify-memoryssa | FileCheck %s
4 declare void @dummy()
5 declare void @dummy1()
7 define void @test() personality ptr @dummy {
8 ; CHECK-LABEL: define void @test() personality ptr @dummy {
9 ; CHECK-NEXT:  entry:
10 ; CHECK-NEXT:    [[P:%.*]] = alloca [2 x i16], i32 0, align 2
11 ; CHECK-NEXT:    br label [[MIDDLE:%.*]]
12 ; CHECK:       middle:
13 ; CHECK-NEXT:    store i32 0, ptr [[P]], align 2, !annotation [[META0:![0-9]+]]
14 ; CHECK-NEXT:    [[CALL:%.*]] = invoke ptr @dummy()
15 ; CHECK-NEXT:            to label [[CLEAN:%.*]] unwind label [[CATCHBB:%.*]]
16 ; CHECK:       clean:
17 ; CHECK-NEXT:    ret void
18 ; CHECK:       catchbb:
19 ; CHECK-NEXT:    [[CS:%.*]] = catchswitch within none [label [[PAD:%.*]], label %pad1] unwind to caller
20 ; CHECK:       pad:
21 ; CHECK-NEXT:    [[C:%.*]] = catchpad within [[CS]] [i32 0]
22 ; CHECK-NEXT:    call void @dummy1()
23 ; CHECK-NEXT:    ret void
24 ; CHECK:       pad1:
25 ; CHECK-NEXT:    [[C1:%.*]] = catchpad within [[CS]] [i32 0]
26 ; CHECK-NEXT:    call void @dummy1()
27 ; CHECK-NEXT:    ret void
29 entry:
30   %p = alloca [2 x i16], i32 0, align 2
31   store i32 0, ptr %p, align 2, !annotation !0
32   br label %middle
34 middle:
35   %call = invoke ptr @dummy() to label %clean unwind label %catchbb
37 clean:
38   ret void
40 catchbb:
41   %cs = catchswitch within none [label %pad, label %pad1] unwind to caller
43 pad:
44   %c = catchpad within %cs [i32 0]
45   call void @dummy1()
46   ret void
48 pad1:
49   %c1 = catchpad within %cs [i32 0]
50   call void @dummy1()
51   ret void
54 !0 = !{!"auto-init"}
56 ; CHECK: [[META0]] = !{!"auto-init"}