61 lines · plain
1; RUN: llc -mtriple=x86_64-windows-msvc < %s | FileCheck %s --check-prefix=X642; RUN: sed -e 's/__C_specific_handler/_except_handler3/' %s | \3; RUN: llc -mtriple=i686-windows-msvc | FileCheck %s --check-prefix=X864 5@str_recovered = internal unnamed_addr constant [10 x i8] c"recovered\00", align 16 7declare void @crash()8 9define i32 @main() personality ptr @__C_specific_handler {10entry:11 invoke void @crash()12 to label %invoke.cont unwind label %lpad13 14invoke.cont: ; preds = %entry15 %call = call i32 @puts(ptr @str_recovered)16 call void @abort()17 ret i32 018 19lpad: ; preds = %entry20 %p = cleanuppad within none []21 %call2 = call i32 @puts(ptr @str_recovered) [ "funclet"(token %p) ]22 cleanupret from %p unwind to caller23}24 25; X64-LABEL: main:26; X64: retq27 28; X64: .seh_handlerdata29; X64-NEXT: .Lmain$parent_frame_offset = 3230; X64-NEXT: .long (.Llsda_end0-.Llsda_begin0)/16 # Number of call sites31; X64-NEXT: .Llsda_begin0:32; X64-NEXT: .long .Ltmp0@IMGREL # LabelStart33; X64-NEXT: .long .Ltmp1@IMGREL # LabelEnd34; X64-NEXT: .long "?dtor$2@?0?main@4HA"@IMGREL # FinallyFunclet35; X64-NEXT: .long 0 # Null36; X64-NEXT: .Llsda_end0:37 38; X64-LABEL: "?dtor$2@?0?main@4HA":39; X64: callq puts40; X64: retq41 42; X86-LABEL: _main:43; X86: retl44 45; X86-LABEL: "?dtor$2@?0?main@4HA":46; X86: LBB0_2:47; X86: calll _puts48; X86: retl49 50; X86: .section .xdata,"dr"51; X86: L__ehtable$main:52; X86-NEXT: .long -1 # ToState53; X86-NEXT: .long 0 # Null54; X86-NEXT: .long "?dtor$2@?0?main@4HA" # FinallyFunclet55 56declare i32 @__C_specific_handler(...)57 58declare i32 @puts(ptr)59 60declare void @abort()61