; NOTE: Assertions have been autogenerated by utils/update_test_checks.py UTC_ARGS: --version 4
; RUN: opt < %s -S -passes='move-auto-init' -verify-memoryssa | FileCheck %s

declare void @dummy()
declare void @dummy1()

define void @test() personality ptr @dummy {
; CHECK-LABEL: define void @test() personality ptr @dummy {
; CHECK-NEXT:  entry:
; CHECK-NEXT:    [[P:%.*]] = alloca [2 x i16], i32 0, align 2
; CHECK-NEXT:    br label [[MIDDLE:%.*]]
; CHECK:       middle:
; CHECK-NEXT:    store i32 0, ptr [[P]], align 2, !annotation [[META0:![0-9]+]]
; CHECK-NEXT:    [[CALL:%.*]] = invoke ptr @dummy()
; CHECK-NEXT:            to label [[CLEAN:%.*]] unwind label [[CATCHBB:%.*]]
; CHECK:       clean:
; CHECK-NEXT:    ret void
; CHECK:       catchbb:
; CHECK-NEXT:    [[CS:%.*]] = catchswitch within none [label [[PAD:%.*]], label %pad1] unwind to caller
; CHECK:       pad:
; CHECK-NEXT:    [[C:%.*]] = catchpad within [[CS]] [i32 0]
; CHECK-NEXT:    call void @dummy1()
; CHECK-NEXT:    ret void
; CHECK:       pad1:
; CHECK-NEXT:    [[C1:%.*]] = catchpad within [[CS]] [i32 0]
; CHECK-NEXT:    call void @dummy1()
; CHECK-NEXT:    ret void
;
entry:
  %p = alloca [2 x i16], i32 0, align 2
  store i32 0, ptr %p, align 2, !annotation !0
  br label %middle

middle:
  %call = invoke ptr @dummy() to label %clean unwind label %catchbb

clean:
  ret void

catchbb:
  %cs = catchswitch within none [label %pad, label %pad1] unwind to caller

pad:
  %c = catchpad within %cs [i32 0]
  call void @dummy1()
  ret void

pad1:
  %c1 = catchpad within %cs [i32 0]
  call void @dummy1()
  ret void
}

!0 = !{!"auto-init"}
;.
; CHECK: [[META0]] = !{!"auto-init"}
;.
