| # This test generates too many debug location entries to fit into 65KB required |
| # by DWARF < 5. Check that the location is set to 0 instead of crashing. |
| # |
| # RUN: %python %s 5750 | llc -mtriple=x86_64-apple-darwin -filetype=obj -o - \ |
| # RUN: | llvm-dwarfdump - | FileCheck %s |
| # |
| # CHECK: 0x0000004d: DW_TAG_formal_parameter |
| # CHECK-NEXT: DW_AT_location (0x00000000 |
| # CHECK-NEXT: [0x0000000000000000, 0x0000000000000008): <empty>) |
| # CHECK-NEXT: DW_AT_name ("self") |
| |
| import sys |
| |
| SKELETON = """define void @test() !dbg !24 {{ |
| {} |
| call void @foo(), !dbg !34 |
| ret void, !dbg !34 |
| }} |
| |
| ; Function Attrs: nounwind readnone speculatable |
| declare void @llvm.dbg.value(metadata, metadata, metadata) #0 |
| |
| declare void @foo() |
| |
| attributes #0 = {{ nounwind readnone speculatable }} |
| |
| !llvm.dbg.cu = !{{!0}} |
| !llvm.module.flags = !{{!22}} |
| |
| !0 = distinct !DICompileUnit(language: DW_LANG_C, file: !1, producer: "clang", isOptimized: true, runtimeVersion: 4, emissionKind: FullDebug) |
| !1 = !DIFile(filename: "asdf.c", directory: "bar") |
| !2 = !{{}} |
| !6 = !DIModule(scope: null, name: "dag", includePath: "/") |
| !8 = distinct !DICompositeType(tag: DW_TAG_structure_type, scope: !6, file: !1, line: 36, size: 2384384, elements: !2, runtimeLang: DW_LANG_C) |
| !22 = !{{i32 2, !"Debug Info Version", i32 3}} |
| !24 = distinct !DISubprogram(name: "main", linkageName: "main", scope: !6, file: !1, line: 1, type: !25, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2) |
| !25 = !DISubroutineType(types: !2) |
| !30 = !DILocalVariable(name: "self", arg: 1, scope: !24, file: !1, line: 12, type: !8, flags: DIFlagArtificial) |
| !34 = !DILocation(line: 12, column: 8, scope: !24) |
| """ |
| |
| CALL = "call void @llvm.dbg.value(metadata i64 {0}, metadata !30, metadata !DIExpression(DW_OP_LLVM_fragment, {1}, 8)), !dbg !34" |
| |
| if __name__ == '__main__': |
| N = int(sys.argv[1]) |
| calls = [] |
| for i in range(0, N): |
| calls.append(CALL.format(i * 10**12, i*8)) |
| print(SKELETON.format('\n'.join(calls))) |