11d1de746SOCHyams; RUN: llc %s -stop-after=finalize-isel -o - \ 21d1de746SOCHyams; RUN: | FileCheck %s 3*30845e8aSStephen Tozer 4*30845e8aSStephen Tozer; RUN: llc --try-experimental-debuginfo-iterators %s -stop-after=finalize-isel -o - \ 5*30845e8aSStephen Tozer; RUN: | FileCheck %s 61d1de746SOCHyams;; 71d1de746SOCHyams;; Backend counterpart to ../Generic/dbg-assign-loop-unroll. This IR was 81d1de746SOCHyams;; generated by running `opt -loop-unroll -S` on the IR in that test. 91d1de746SOCHyams;; 101d1de746SOCHyams;; Check that the backend can handle a mesh of dbg.assign and linked 111d1de746SOCHyams;; instructions. 121d1de746SOCHyams;; 131d1de746SOCHyams;; Generated from the following source: 141d1de746SOCHyams;; void esc(int*); 151d1de746SOCHyams;; void d(int p) { 161d1de746SOCHyams;; for (int i = 0; i < 2; ++i) { 171d1de746SOCHyams;; p = i; 181d1de746SOCHyams;; esc(&p); 191d1de746SOCHyams;; } 201d1de746SOCHyams;; } 211d1de746SOCHyams 221d1de746SOCHyams; CHECK: ![[p:[0-9]+]] = !DILocalVariable(name: "p", 231d1de746SOCHyams 241d1de746SOCHyams; CHECK: stack: 251d1de746SOCHyams; CHECK-NEXT: - { id: 0, name: p.addr, type: default, offset: 0, size: 4, alignment: 4, 261d1de746SOCHyams; CHECK-NEXT: stack-id: default, callee-saved-register: '', callee-saved-restored: true, 271d1de746SOCHyams; CHECK-NEXT: debug-info-variable: '![[p]]', debug-info-expression: '!DIExpression()', 281d1de746SOCHyams; CHECK-NEXT: debug-info-location: '!{{.+}}' } 291d1de746SOCHyams 301d1de746SOCHyamstarget triple = "x86_64-unknown-linux-gnu" 311d1de746SOCHyams 321d1de746SOCHyamsdefine dso_local void @_Z1di(i32 %p) local_unnamed_addr !dbg !7 { 331d1de746SOCHyamsentry: 341d1de746SOCHyams %p.addr = alloca i32, align 4 351d1de746SOCHyams store i32 %p, ptr %p.addr, align 4, !DIAssignID !19 361d1de746SOCHyams call void @llvm.dbg.assign(metadata i32 %p, metadata !12, metadata !DIExpression(), metadata !19, metadata ptr %p.addr, metadata !DIExpression()), !dbg !20 371d1de746SOCHyams call void @llvm.dbg.assign(metadata i32 0, metadata !13, metadata !DIExpression(), metadata !21, metadata ptr undef, metadata !DIExpression()), !dbg !22 381d1de746SOCHyams br label %for.body, !dbg !23 391d1de746SOCHyams 401d1de746SOCHyamsfor.body: ; preds = %entry 411d1de746SOCHyams store i32 0, ptr %p.addr, align 4, !dbg !24, !DIAssignID !27 421d1de746SOCHyams call void @llvm.dbg.assign(metadata i32 0, metadata !12, metadata !DIExpression(), metadata !27, metadata ptr %p.addr, metadata !DIExpression()), !dbg !24 431d1de746SOCHyams call void @_Z3escPi(ptr nonnull %p.addr), !dbg !28 441d1de746SOCHyams call void @llvm.dbg.assign(metadata i32 1, metadata !13, metadata !DIExpression(), metadata !29, metadata ptr undef, metadata !DIExpression()), !dbg !30 451d1de746SOCHyams store i32 1, ptr %p.addr, align 4, !dbg !24, !DIAssignID !27 461d1de746SOCHyams call void @llvm.dbg.assign(metadata i32 1, metadata !12, metadata !DIExpression(), metadata !27, metadata ptr %p.addr, metadata !DIExpression()), !dbg !24 471d1de746SOCHyams call void @_Z3escPi(ptr nonnull %p.addr), !dbg !28 481d1de746SOCHyams call void @llvm.dbg.assign(metadata i32 2, metadata !13, metadata !DIExpression(), metadata !29, metadata ptr undef, metadata !DIExpression()), !dbg !30 491d1de746SOCHyams ret void, !dbg !31 501d1de746SOCHyams} 511d1de746SOCHyams 521d1de746SOCHyamsdeclare !dbg !32 dso_local void @_Z3escPi(ptr) local_unnamed_addr 531d1de746SOCHyamsdeclare void @llvm.dbg.assign(metadata, metadata, metadata, metadata, metadata, metadata) 541d1de746SOCHyams 551d1de746SOCHyams!llvm.dbg.cu = !{!0} 564ece5073SOCHyams!llvm.module.flags = !{!3, !4, !5, !1000} 571d1de746SOCHyams!llvm.ident = !{!6} 581d1de746SOCHyams 591d1de746SOCHyams!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus_14, file: !1, producer: "clang version 12.0.0", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2, splitDebugInlining: false, nameTableKind: None) 601d1de746SOCHyams!1 = !DIFile(filename: "test.cpp", directory: "/") 611d1de746SOCHyams!2 = !{} 621d1de746SOCHyams!3 = !{i32 7, !"Dwarf Version", i32 4} 631d1de746SOCHyams!4 = !{i32 2, !"Debug Info Version", i32 3} 641d1de746SOCHyams!5 = !{i32 1, !"wchar_size", i32 4} 651d1de746SOCHyams!6 = !{!"clang version 12.0.0"} 661d1de746SOCHyams!7 = distinct !DISubprogram(name: "d", linkageName: "_Z1di", scope: !1, file: !1, line: 2, type: !8, scopeLine: 2, flags: DIFlagPrototyped | DIFlagAllCallsDescribed, spFlags: DISPFlagDefinition | DISPFlagOptimized, unit: !0, retainedNodes: !11) 671d1de746SOCHyams!8 = !DISubroutineType(types: !9) 681d1de746SOCHyams!9 = !{null, !10} 691d1de746SOCHyams!10 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 701d1de746SOCHyams!11 = !{!12, !13} 711d1de746SOCHyams!12 = !DILocalVariable(name: "p", arg: 1, scope: !7, file: !1, line: 2, type: !10) 721d1de746SOCHyams!13 = !DILocalVariable(name: "i", scope: !14, file: !1, line: 3, type: !10) 731d1de746SOCHyams!14 = distinct !DILexicalBlock(scope: !7, file: !1, line: 3, column: 3) 741d1de746SOCHyams!19 = distinct !DIAssignID() 751d1de746SOCHyams!20 = !DILocation(line: 0, scope: !7) 761d1de746SOCHyams!21 = distinct !DIAssignID() 771d1de746SOCHyams!22 = !DILocation(line: 3, column: 12, scope: !14) 781d1de746SOCHyams!23 = !DILocation(line: 3, column: 3, scope: !14) 791d1de746SOCHyams!24 = !DILocation(line: 4, column: 7, scope: !25) 801d1de746SOCHyams!25 = distinct !DILexicalBlock(scope: !26, file: !1, line: 3, column: 31) 811d1de746SOCHyams!26 = distinct !DILexicalBlock(scope: !14, file: !1, line: 3, column: 3) 821d1de746SOCHyams!27 = distinct !DIAssignID() 831d1de746SOCHyams!28 = !DILocation(line: 5, column: 5, scope: !25) 841d1de746SOCHyams!29 = distinct !DIAssignID() 851d1de746SOCHyams!30 = !DILocation(line: 3, column: 26, scope: !26) 861d1de746SOCHyams!31 = !DILocation(line: 7, column: 1, scope: !7) 871d1de746SOCHyams!32 = !DISubprogram(name: "esc", linkageName: "_Z3escPi", scope: !1, file: !1, line: 1, type: !33, flags: DIFlagPrototyped, spFlags: DISPFlagOptimized, retainedNodes: !2) 881d1de746SOCHyams!33 = !DISubroutineType(types: !34) 891d1de746SOCHyams!34 = !{null, !35} 901d1de746SOCHyams!35 = !DIDerivedType(tag: DW_TAG_pointer_type, baseType: !10, size: 64) 914ece5073SOCHyams!1000 = !{i32 7, !"debug-info-assignment-tracking", i1 true} 92