File: dwarf-size-field-overflow.test

package info (click to toggle)
llvm-toolchain-9 1%3A9.0.1-16
  • links: PTS, VCS
  • area: main
  • in suites:
  • size: 882,436 kB
  • sloc: cpp: 4,167,636; ansic: 714,256; asm: 457,610; python: 155,927; objc: 65,094; sh: 42,856; lisp: 26,908; perl: 7,786; pascal: 7,722; makefile: 6,881; ml: 5,581; awk: 3,648; cs: 2,027; xml: 888; javascript: 381; ruby: 156
file content (49 lines) | stat: -rw-r--r-- 1,984 bytes parent folder | download | duplicates (2)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
# 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 4000 | llc -mtriple=x86_64-apple-darwin -filetype=obj -o %t
# RUN: llvm-dwarfdump %t | FileCheck %s
#
# CHECK:       0x0000004d:       DW_TAG_formal_parameter
# CHECK-NEXT:      DW_AT_location   (0x00000000
# CHECK-NEXT:           [0x0000000000000000,  0x0000000000000008): )
# 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, {0}, 64)), !dbg !34"

if __name__ == '__main__':
    N = int(sys.argv[1])
    calls = []
    for i in range(0, N):
        calls.append(CALL.format(i * 10**12))
    print(SKELETON.format('\n'.join(calls)))