48 lines · plain
1; RUN: llc < %s -mtriple=aarch64-pc-mingw32 | FileCheck %s -check-prefix=WINEH2; RUN: llc < %s -mtriple=aarch64-pc-mingw32 -filetype=obj | llvm-readobj -S - | FileCheck %s -check-prefix=WINEH-SECTIONS3 4; Check emission of eh handler and handler data5declare i32 @_d_eh_personality(i32, i32, i64, ptr, ptr)6declare void @_d_eh_resume_unwind(ptr)7 8declare i32 @bar()9 10define i32 @foo4() #0 personality ptr @_d_eh_personality {11entry:12 %step = alloca i32, align 413 store i32 0, ptr %step14 %tmp = load i32, ptr %step15 16 %tmp1 = invoke i32 @bar()17 to label %finally unwind label %landingpad18 19finally:20 store i32 1, ptr %step21 br label %endtryfinally22 23landingpad:24 %landing_pad = landingpad { ptr, i32 }25 cleanup26 %tmp3 = extractvalue { ptr, i32 } %landing_pad, 027 store i32 2, ptr %step28 call void @_d_eh_resume_unwind(ptr %tmp3)29 unreachable30 31endtryfinally:32 %tmp10 = load i32, ptr %step33 ret i32 %tmp1034}35; WINEH-LABEL: foo4:36; WINEH: .seh_proc foo437; WINEH: .seh_handler _d_eh_personality, @unwind, @except38; WINEH: ret39; WINEH: .seh_handlerdata40; WINEH-NEXT: .text41; WINEH-NEXT: .seh_endproc42; WINEH: .section .xdata,"dr"43; WINEH-NEXT: .p2align 244; WINEH-NEXT: GCC_except_table0:45 46; WINEH-SECTIONS: Name: .xdata47; WINEH-SECTIONS-NOT: Name: .gcc_except_table48