; RUN: llc < %s | FileCheck %s target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" target triple = "x86_64-pc-windows-msvc19.28.29914" @str = private unnamed_addr constant [6 x i8] c"Boom!\00", align 1 define dso_local void @trap() { entry: unreachable } define dso_local void @test() personality ptr @__CxxFrameHandler3 { entry: ; CHECK-LABEL: .Ltmp0: ; CHECK: callq trap ; CHECK-LABEL: .Ltmp1: invoke void asm sideeffect unwind "call trap", "~{dirflag},~{fpsr},~{flags}"() to label %exit unwind label %except exit: ret void except: ; CHECK-LABEL: "?dtor$2@?0?test@4HA": ; CHECK: callq printf %0 = cleanuppad within none [] call void (ptr, ...) @printf(ptr @str) [ "funclet"(token %0) ] cleanupret from %0 unwind to caller } declare dso_local i32 @__CxxFrameHandler3(...) declare dso_local void @printf(ptr, ...) ; SEH Table ; CHECK-LABEL: $cppxdata$test: ; CHECK-NEXT: .long 429065506 # MagicNumber ; CHECK-NEXT: .long 1 # MaxState ; CHECK-NEXT: .long ($stateUnwindMap$test)@IMGREL # UnwindMap ; CHECK-NEXT: .long 0 # NumTryBlocks ; CHECK-NEXT: .long 0 # TryBlockMap ; CHECK-NEXT: .long 3 # IPMapEntries ; CHECK-NEXT: .long ($ip2state$test)@IMGREL # IPToStateXData ; CHECK-NEXT: .long 40 # UnwindHelp ; CHECK-NEXT: .long 0 # ESTypeList ; CHECK-NEXT: .long 1 # EHFlags ; CHECK-NEXT:$stateUnwindMap$test: ; CHECK-NEXT: .long -1 # ToState ; CHECK-NEXT: .long "?dtor$2@?0?test@4HA"@IMGREL # Action ; CHECK-NEXT:$ip2state$test: ; CHECK-NEXT: .long .Lfunc_begin0@IMGREL # IP ; CHECK-NEXT: .long -1 # ToState ; CHECK-NEXT: .long .Ltmp0@IMGREL+1 # IP ; CHECK-NEXT: .long 0 # ToState ; CHECK-NEXT: .long .Ltmp1@IMGREL+1 # IP ; CHECK-NEXT: .long -1 # ToState