; RUN: llc < %s | FileCheck %s

; IR generated by the following C++ source with modifications to reuse the 'v'
; alloca between catchpads:
; extern "C" void maythrow();
; int main() {
;   try {
;     try {
;       maythrow();
;     } catch (int v) {
;       maythrow();
;     }
;   } catch (int v) {
;     maythrow();
;   }
;   return 0;
; }

; CHECK: $cppxdata$main:
; CHECK-NEXT: .long   429065506               # MagicNumber
; CHECK-NEXT: .long   4                       # MaxState
; CHECK-NEXT: .long   ($stateUnwindMap$main)@IMGREL # UnwindMap
; CHECK-NEXT: .long   2                       # NumTryBlocks
; CHECK-NEXT: .long   ($tryMap$main)@IMGREL   # TryBlockMap
; CHECK-NEXT: .long   5                       # IPMapEntries
; CHECK-NEXT: .long   ($ip2state$main)@IMGREL # IPToStateXData
; CHECK-NEXT: .long   32                      # UnwindHelp
; CHECK-NEXT: .long   0                       # ESTypeList
; CHECK-NEXT: .long   1                       # EHFlags

; CHECK: $tryMap$main:
; CHECK-NEXT: .long   1                       # TryLow
; CHECK-NEXT: .long   1                       # TryHigh
; CHECK-NEXT: .long   2                       # CatchHigh
; CHECK-NEXT: .long   1                       # NumCatches
; CHECK-NEXT: .long   ($handlerMap$0$main)@IMGREL # HandlerArray
; CHECK-NEXT: .long   0                       # TryLow
; CHECK-NEXT: .long   2                       # TryHigh
; CHECK-NEXT: .long   3                       # CatchHigh
; CHECK-NEXT: .long   1                       # NumCatches
; CHECK-NEXT: .long   ($handlerMap$1$main)@IMGREL # HandlerArray

; CHECK: $handlerMap$0$main:
; CHECK-NEXT: .long   0                       # Adjectives
; CHECK-NEXT: .long   "??_R0H@8"@IMGREL       # Type
; CHECK-NEXT: .long   [[v_offset:[0-9]+]]     # CatchObjOffset
; CHECK-NEXT: .long   "?catch$2@?0?main@4HA"@IMGREL # Handler
; CHECK-NEXT: .long   {{.*}}                  # ParentFrameOffset

; CHECK: $handlerMap$1$main:
; CHECK-NEXT: .long   0                       # Adjectives
; CHECK-NEXT: .long   "??_R0H@8"@IMGREL       # Type
; CHECK-NEXT: .long   [[v_offset]]            # CatchObjOffset
; CHECK-NEXT: .long   "?catch$4@?0?main@4HA"@IMGREL # Handler
; CHECK-NEXT: .long   {{.*}}                      # ParentFrameOffset

; ModuleID = 't.cpp'
source_filename = "t.cpp"
target datalayout = "e-m:w-i64:64-f80:128-n8:16:32:64-S128"
target triple = "x86_64-pc-windows-msvc19.0.24210"

%rtti.TypeDescriptor2 = type { i8**, i8*, [3 x i8] }

$"\01??_R0H@8" = comdat any

@"\01??_7type_info@@6B@" = external constant i8*
@"\01??_R0H@8" = linkonce_odr global %rtti.TypeDescriptor2 { i8** @"\01??_7type_info@@6B@", i8* null, [3 x i8] c".H\00" }, comdat

; Function Attrs: norecurse uwtable
define i32 @main() local_unnamed_addr personality i32 (...)* @__CxxFrameHandler3 {
entry:
  %v = alloca i32, align 4
  invoke void @maythrow()
          to label %try.cont6 unwind label %catch.dispatch

catch.dispatch:                                   ; preds = %entry
  %0 = catchswitch within none [label %catch] unwind label %catch.dispatch2

catch:                                            ; preds = %catch.dispatch
  %1 = catchpad within %0 [%rtti.TypeDescriptor2* @"\01??_R0H@8", i32 0, i32* %v]
  invoke void @maythrow() [ "funclet"(token %1) ]
          to label %invoke.cont1 unwind label %catch.dispatch2

catch.dispatch2:                                  ; preds = %catch, %catch.dispatch
  %2 = catchswitch within none [label %catch3] unwind to caller

catch3:                                           ; preds = %catch.dispatch2
  %3 = catchpad within %2 [%rtti.TypeDescriptor2* @"\01??_R0H@8", i32 0, i32* %v]
  call void @maythrow() [ "funclet"(token %3) ]
  catchret from %3 to label %try.cont6

try.cont6:                                        ; preds = %entry, %invoke.cont1, %catch3
  ret i32 0

invoke.cont1:                                     ; preds = %catch
  catchret from %1 to label %try.cont6
}

declare void @maythrow() local_unnamed_addr #1

declare i32 @__CxxFrameHandler3(...)

!llvm.module.flags = !{!0}
!llvm.ident = !{!1}

!0 = !{i32 1, !"PIC Level", i32 2}
!1 = !{!"clang version 4.0.0 "}
