File: cross-cu-inlining-2.ll

package info (click to toggle)
llvm-toolchain-16 1%3A16.0.6-15~deb12u1
  • links: PTS, VCS
  • area: main
  • in suites: bookworm
  • size: 1,634,792 kB
  • sloc: cpp: 6,179,261; ansic: 1,216,205; asm: 741,319; python: 196,614; objc: 75,325; f90: 49,640; lisp: 32,396; pascal: 12,286; sh: 9,394; perl: 7,442; ml: 5,494; awk: 3,523; makefile: 2,723; javascript: 1,206; xml: 886; fortran: 581; cs: 573
file content (66 lines) | stat: -rw-r--r-- 3,183 bytes parent folder | download | duplicates (4)
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
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
; REQUIRES: object-emission
; RUN: %llc_dwarf %s -O0 -filetype=obj -o %t.o
; RUN: llvm-dwarfdump %t.o --debug-info --verbose | FileCheck %s --implicit-check-not "{{DW_TAG|NULL}}"
; RUN: llvm-dwarfdump %t.o --debug-info --verify

; Test that we can inline from a different CU in a way that has triggered a bug.

define void @foo() !dbg !24 {
  ret void, !dbg !28
}

define void @bar() !dbg !34 {
  ret void, !dbg !35
}

!llvm.dbg.cu = !{!0, !3}
!llvm.module.flags = !{!10, !11}

!0 = distinct !DICompileUnit(language: DW_LANG_Swift, file: !1, isOptimized: true, runtimeVersion: 5, emissionKind: FullDebug, globals: !2, imports: !2)
!1 = !DIFile(filename: "A.swift", directory: "")
!2 = !{}
!3 = distinct !DICompileUnit(language: DW_LANG_Swift, file: !4, isOptimized: true, runtimeVersion: 5, emissionKind: FullDebug, imports: !2)
!4 = !DIFile(filename: "B.swift", directory: "")
!10 = !{i32 7, !"Dwarf Version", i32 4}
!11 = !{i32 2, !"Debug Info Version", i32 3}
!24 = distinct !DISubprogram(name: "foo", scope: !25, file: !1, line: 116, type: !27, scopeLine: 116, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2)
!25 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "FooTy", scope: !26, file: !1, size: 64, elements: !2)
!26 = !DIModule(scope: null, name: "Mod")
!27 = !DISubroutineType(types: !2)
!28 = !DILocation(line: 0, scope: !29, inlinedAt: !32)
!29 = distinct !DISubprogram(name: "init", scope: !31, file: !30, type: !27, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !2)
!30 = !DIFile(filename: "<compiler-generated>", directory: "")
!31 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "ModController", scope: !26, file: !4, size: 64, elements: !2, runtimeLang: DW_LANG_Swift)
!32 = !DILocation(line: 117, column: 29, scope: !33)
!33 = distinct !DILexicalBlock(scope: !24, file: !1, line: 116, column: 68)
!34 = distinct !DISubprogram(name: "bar", scope: !31, file: !4, line: 21, type: !27, scopeLine: 21, unit: !3, retainedNodes: !2)
!35 = !DILocation(line: 0, scope: !36, inlinedAt: !37)
!36 = distinct !DISubprogram(name: "goo", scope: !26, file: !30, type: !27, unit: !3, retainedNodes: !2)
!37 = !DILocation(line: 21, column: 26, scope: !34)

; CHECK: DW_TAG_compile_unit
; CHECK:   DW_TAG_module
; CHECK:     DW_TAG_structure_type
; CHECK: [[INIT:0x.*]]: DW_TAG_subprogram
; CHECK;         DW_AT_name [DW_FORM_strp]  ({{.*}} = "init")
; CHECK:       DW_TAG_subprogram
; CHECK;         DW_AT_name [DW_FORM_strp]  ({{.*}} = "bar")
; CHECK:         DW_TAG_inlined_subroutine
; CHECK:           DW_AT_abstract_origin [DW_FORM_ref_addr] (0x00000000[[GOO:.*]] "goo")
; CHECK:         NULL
; CHECK:       NULL
; CHECK:     DW_TAG_structure_type
; CHECK:       DW_TAG_subprogram
; CHECK;         DW_AT_name [DW_FORM_strp]  ({{.*}} = "foo")
; CHECK:         DW_TAG_inlined_subroutine
; CHECK:           DW_AT_abstract_origin [DW_FORM_ref4]  ({{.*}} => {[[INIT]]} "init")
; CHECK:         NULL
; CHECK:       NULL
; CHECK:     NULL
; CHECK:   NULL
; CHECK: DW_TAG_compile_unit
; CHECK:   DW_TAG_module
; CHECK: 0x[[GOO]]: DW_TAG_subprogram
; CHECK;       DW_AT_name [DW_FORM_strp]  ({{.*}} = "goo")
; CHECK:     NULL
; CHECK:   NULL