1; RUN: llc < %s | FileCheck %s 2 3target datalayout = "e-m:w-p270:32:32-p271:32:32-p272:64:64-i64:64-f80:128-n8:16:32:64-S128" 4target triple = "x86_64-pc-windows-msvc19.28.29914" 5 6@str = private unnamed_addr constant [6 x i8] c"Boom!\00", align 1 7 8define dso_local void @trap() { 9entry: 10 unreachable 11} 12 13define dso_local void @test() personality ptr @__CxxFrameHandler3 { 14entry: 15 16; CHECK-LABEL: .Ltmp0: 17; CHECK: callq trap 18; CHECK-LABEL: .Ltmp1: 19 20 invoke void asm sideeffect unwind "call trap", "~{dirflag},~{fpsr},~{flags}"() 21 to label %exit unwind label %except 22 23exit: 24 ret void 25 26except: 27 28; CHECK-LABEL: "?dtor$2@?0?test@4HA": 29; CHECK: callq printf 30 31 %0 = cleanuppad within none [] 32 call void (ptr, ...) @printf(ptr @str) [ "funclet"(token %0) ] 33 cleanupret from %0 unwind to caller 34} 35 36declare dso_local i32 @__CxxFrameHandler3(...) 37 38declare dso_local void @printf(ptr, ...) 39 40; SEH Table 41 42; CHECK-LABEL: $cppxdata$test: 43; CHECK-NEXT: .long 429065506 # MagicNumber 44; CHECK-NEXT: .long 1 # MaxState 45; CHECK-NEXT: .long ($stateUnwindMap$test)@IMGREL # UnwindMap 46; CHECK-NEXT: .long 0 # NumTryBlocks 47; CHECK-NEXT: .long 0 # TryBlockMap 48; CHECK-NEXT: .long 3 # IPMapEntries 49; CHECK-NEXT: .long ($ip2state$test)@IMGREL # IPToStateXData 50; CHECK-NEXT: .long 40 # UnwindHelp 51; CHECK-NEXT: .long 0 # ESTypeList 52; CHECK-NEXT: .long 1 # EHFlags 53; CHECK-NEXT:$stateUnwindMap$test: 54; CHECK-NEXT: .long -1 # ToState 55; CHECK-NEXT: .long "?dtor$2@?0?test@4HA"@IMGREL # Action 56; CHECK-NEXT:$ip2state$test: 57; CHECK-NEXT: .long .Lfunc_begin0@IMGREL # IP 58; CHECK-NEXT: .long -1 # ToState 59; CHECK-NEXT: .long .Ltmp0@IMGREL+1 # IP 60; CHECK-NEXT: .long 0 # ToState 61; CHECK-NEXT: .long .Ltmp1@IMGREL+1 # IP 62; CHECK-NEXT: .long -1 # ToState 63 64