1; RUN: llc -mtriple=x86_64-pc-windows-msvc %s -o /dev/null 2define dso_local void @main(ptr %addr, ptr %src, ptr %dst) personality ptr @__CxxFrameHandler3 !dbg !11 { 3entry: 4 %tmp0 = load float, ptr %src 5 %src1 = getelementptr inbounds float, ptr %src, i64 1 6 %tmp1 = load float, ptr %src1 7 %src2 = getelementptr inbounds float, ptr %src, i64 2 8 %tmp2 = load float, ptr %src2 9 %src3 = getelementptr inbounds float, ptr %src, i64 3 10 %tmp3 = load float, ptr %src3 11 %src4 = getelementptr inbounds float, ptr %src, i64 4 12 %tmp4 = load float, ptr %src4 13 %src5 = getelementptr inbounds float, ptr %src, i64 5 14 %tmp5 = load float, ptr %src5 15 %src6 = getelementptr inbounds float, ptr %src, i64 6 16 %tmp6 = load float, ptr %src6 17 invoke void @foo(ptr %addr) 18 to label %scope_begin unwind label %ehcleanup1, !dbg !13 19 20scope_begin: 21 invoke void @llvm.seh.scope.begin() 22 to label %scope_end unwind label %ehcleanup, !dbg !13 23 24scope_end: 25 invoke void @llvm.seh.scope.end() 26 to label %finish unwind label %ehcleanup, !dbg !13 27 28ehcleanup: 29 %0 = cleanuppad within none [], !dbg !13 30 call void @llvm.dbg.value(metadata ptr %addr, metadata !12, metadata !DIExpression()), !dbg !13 31 call void @foo(ptr %addr) [ "funclet"(token %0) ], !dbg !13 32 cleanupret from %0 unwind label %ehcleanup1, !dbg !13 33 34ehcleanup1: 35 %1 = cleanuppad within none [], !dbg !13 36 call void @foo(ptr %addr) [ "funclet"(token %1) ], !dbg !13 37 cleanupret from %1 unwind to caller, !dbg !13 38 39finish: 40 store float %tmp0, ptr %dst 41 %dst1 = getelementptr inbounds float, ptr %dst, i64 1 42 store float %tmp1, ptr %dst1 43 %dst2 = getelementptr inbounds float, ptr %dst, i64 2 44 store float %tmp2, ptr %dst2 45 %dst3 = getelementptr inbounds float, ptr %dst, i64 3 46 store float %tmp3, ptr %dst3 47 %dst4 = getelementptr inbounds float, ptr %dst, i64 4 48 store float %tmp4, ptr %dst4 49 %dst5 = getelementptr inbounds float, ptr %dst, i64 5 50 store float %tmp5, ptr %dst5 51 %dst6 = getelementptr inbounds float, ptr %dst, i64 6 52 store float %tmp6, ptr %dst6 53 ret void 54} 55 56declare dso_local void @llvm.seh.scope.begin() 57declare dso_local void @llvm.seh.scope.end() 58declare dso_local i32 @__CxxFrameHandler3(...) 59declare dso_local void @foo(ptr %addr) 60declare void @llvm.dbg.value(metadata, metadata, metadata) 61 62!llvm.module.flags = !{!0, !1, !2, !3} 63!llvm.dbg.cu = !{!14} 64 65!0 = !{i32 2, !"eh-asynch", i32 1} 66!1 = !{i32 2, !"CodeView", i32 1} 67!2 = !{i32 2, !"Debug Info Version", i32 3} 68!3 = !{i32 7, !"uwtable", i32 2} 69 70!4 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float) 71!5 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !4, size: 64) 72!6 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 73!7 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !6, size: 64) 74!8 = !DISubroutineType(types: !9) 75!9 = !{null, !7, !5, !5} 76!10 = !DIFile(filename: "c:/main.cpp", directory: "") 77!11 = distinct !DISubprogram(name: "main", scope: !10, file: !10, line: 5, type: !8, scopeLine: 11, unit: !14) 78!12 = !DILocalVariable(name: "addr", scope: !11, file: !10, line: 5, type: !7) 79!13 = !DILocation(line: 7, scope: !11) 80!14 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !10, isOptimized: true, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) 81