+; X64-NEXT: .long [[e_addr]]
+; X64-NEXT: .long "?catch$[[catch1bb]]@?0?try_catch_catch@4HA"@IMGREL
+; X64-NEXT: .long 56
+; X64-NEXT: .long 64
+; X64-NEXT: .long 0
+; X64-NEXT: .long 0
+; X64-NEXT: .long "?catch$[[catch2bb]]@?0?try_catch_catch@4HA"@IMGREL
+; X64-NEXT: .long 56
+
+; X64: $ip2state$try_catch_catch:
+; X64-NEXT: .long .Lfunc_begin0@IMGREL
+; X64-NEXT: .long -1
+; X64-NEXT: .long .Ltmp0@IMGREL
+; X64-NEXT: .long 0
+; X64-NEXT: .long .Ltmp4@IMGREL
+; X64-NEXT: .long 1
+; X64-NEXT: .long .Ltmp3@IMGREL+1
+; X64-NEXT: .long -1
+
+
+define i32 @branch_to_normal_dest() personality i8* bitcast (i32 (...)* @__CxxFrameHandler3 to i8*) {
+entry:
+ invoke void @f(i32 1, i32* null)
+ to label %try.cont unwind label %catch.dispatch
+
+catch.dispatch:
+ %0 = catchpad [i8* null, i32 64, i8* null]
+ to label %catch unwind label %catchendblock
+
+catch:
+ %V = call i1 @getbool()
+ br i1 %V, label %catch, label %catch.done
+
+catch.done:
+ catchret %0 to label %try.cont
+
+try.cont:
+ ret i32 0
+
+catchendblock:
+ catchendpad unwind to caller
+}
+
+; X86-LABEL: _branch_to_normal_dest:
+; X86: calll _f
+
+; X86: [[contbb:LBB1_[0-9]+]]: # %try.cont
+; X86: retl
+
+; X86: [[restorebb:LBB1_[0-9]+]]: # %catch.done
+; X86: movl -16(%ebp), %esp
+; X86: addl $12, %ebp
+; X86: jmp [[contbb]]
+
+; X86: "?catch$[[catchdispbb:[0-9]+]]@?0?branch_to_normal_dest@4HA":
+; X86: LBB1_[[catchdispbb]]: # %catch.dispatch{{$}}
+; X86: pushl %ebp
+; X86: subl $8, %esp
+; X86: addl $12, %ebp
+
+; X86: LBB1_[[catchbb:[0-9]+]]: # %catch
+; X86: movl $-1, -16(%ebp)
+; X86: calll _getbool
+; X86: testb $1, %al
+; X86: jne LBB1_[[catchbb]]
+; X86: # %catch.done
+; X86-NEXT: movl $[[restorebb]], %eax
+; X86-NEXT: addl $8, %esp
+; X86-NEXT: popl %ebp
+; X86-NEXT: retl
+
+; X86: L__ehtable$branch_to_normal_dest:
+; X86: $handlerMap$0$branch_to_normal_dest:
+; X86-NEXT: .long 64
+; X86-NEXT: .long 0
+; X86-NEXT: .long 0
+; X86-NEXT: .long "?catch$[[catchdispbb]]@?0?branch_to_normal_dest@4HA"
+
+; X64-LABEL: branch_to_normal_dest:
+; X64: # %entry
+; X64: pushq %rbp
+; X64: .seh_pushreg 5
+; X64: subq $48, %rsp
+; X64: .seh_stackalloc 48
+; X64: leaq 48(%rsp), %rbp
+; X64: .seh_setframe 5, 48
+; X64: .seh_endprologue
+; X64: .Ltmp[[before_call:[0-9]+]]:
+; X64: callq f
+; X64: .Ltmp[[after_call:[0-9]+]]:
+; X64: [[contbb:\.LBB1_[0-9]+]]: # %try.cont
+; X64: addq $48, %rsp
+; X64: popq %rbp
+; X64: retq
+
+; X64: "?catch$[[catchbb:[0-9]+]]@?0?branch_to_normal_dest@4HA":
+; X64: LBB1_[[catchbb]]: # %catch.dispatch{{$}}
+; X64: movq %rdx, 16(%rsp)
+; X64: pushq %rbp
+; X64: .seh_pushreg 5
+; X64: subq $32, %rsp
+; X64: .seh_stackalloc 32
+; X64: leaq 48(%rdx), %rbp
+; X64: .seh_endprologue
+; X64: .LBB1_[[normal_dest_bb:[0-9]+]]: # %catch
+; X64: callq getbool
+; X64: testb $1, %al
+; X64: jne .LBB1_[[normal_dest_bb]]
+; X64: # %catch.done
+; X64: leaq [[contbb]](%rip), %rax
+; X64-NEXT: addq $32, %rsp
+; X64-NEXT: popq %rbp
+; X64-NEXT: retq
+
+; X64-LABEL: $cppxdata$branch_to_normal_dest:
+; X64-NEXT: .long 429065506
+; X64-NEXT: .long 2
+; X64-NEXT: .long ($stateUnwindMap$branch_to_normal_dest)@IMGREL
+; X64-NEXT: .long 1
+; X64-NEXT: .long ($tryMap$branch_to_normal_dest)@IMGREL
+; X64-NEXT: .long 3
+; X64-NEXT: .long ($ip2state$branch_to_normal_dest)@IMGREL
+; X64-NEXT: .long 40
+; X64-NEXT: .long 0
+; X64-NEXT: .long 1
+
+; X64-LABEL: $stateUnwindMap$branch_to_normal_dest:
+; X64-NEXT: .long -1
+; X64-NEXT: .long 0
+; X64-NEXT: .long -1
+; X64-NEXT: .long 0
+
+; X64-LABEL: $tryMap$branch_to_normal_dest:
+; X64-NEXT: .long 0
+; X64-NEXT: .long 0
+; X64-NEXT: .long 1
+; X64-NEXT: .long 1
+; X64-NEXT: .long ($handlerMap$0$branch_to_normal_dest)@IMGREL
+
+; X64-LABEL: $handlerMap$0$branch_to_normal_dest:
+; X64-NEXT: .long 64
+; X64-NEXT: .long 0
+; X64-NEXT: .long 0
+; X64-NEXT: .long "?catch$[[catchbb]]@?0?branch_to_normal_dest@4HA"@IMGREL
+; X64-NEXT: .long 56
+
+; X64-LABEL: $ip2state$branch_to_normal_dest:
+; X64-NEXT: .long .Lfunc_begin1@IMGREL
+; X64-NEXT: .long -1
+; X64-NEXT: .long .Ltmp[[before_call]]@IMGREL
+; X64-NEXT: .long 0
+; X64-NEXT: .long .Ltmp[[after_call]]@IMGREL+1
+; X64-NEXT: .long -1