1
0
mirror of https://github.com/RPCS3/llvm-mirror.git synced 2025-02-01 05:01:59 +01:00
llvm-mirror/test/MC/COFF/cv-inline-linetable.s
Reid Kleckner bcdfe567cb [CodeView] Add line numbers for inlined call sites
We did this for inline call site line tables, but we hadn't done it for
regular function line tables yet. This patch copies that logic from
encodeInlineLineTable.

llvm-svn: 322905
2018-01-18 22:55:43 +00:00

164 lines
4.2 KiB
ArmAsm

# RUN: llvm-mc -triple=i686-pc-win32 -filetype=obj < %s | llvm-readobj -codeview | FileCheck %s
.text
.def @feat.00;
.scl 3;
.type 0;
.endef
.globl @feat.00
@feat.00 = 1
.def "?baz@@YAXXZ";
.scl 2;
.type 32;
.endef
.globl "?baz@@YAXXZ"
.p2align 4, 0x90
"?baz@@YAXXZ": # @"\01?baz@@YAXXZ"
Lfunc_begin0:
.cv_file 1 "D:\\src\\llvm\\build\\t.cpp"
.cv_func_id 0
.cv_inline_site_id 1 within 0 inlined_at 1 15 3
.cv_inline_site_id 2 within 1 inlined_at 1 10 3
.cv_loc 0 1 13 0 is_stmt 0 # t.cpp:13:0
# %bb.0: # %entry
pushl %eax
.cv_loc 0 1 14 5 # t.cpp:14:5
addl $6, "?x@@3HC"
.cv_loc 1 1 9 5 # t.cpp:9:5
addl $4, "?x@@3HC"
.cv_loc 2 1 3 7 # t.cpp:3:7
movl $1, (%esp)
leal (%esp), %eax
.cv_loc 2 1 4 5 # t.cpp:4:5
addl %eax, "?x@@3HC"
.cv_loc 2 1 5 5 # t.cpp:5:5
addl $2, "?x@@3HC"
.cv_loc 2 1 6 5 # t.cpp:6:5
addl $3, "?x@@3HC"
.cv_loc 1 1 11 5 # t.cpp:11:5
addl $5, "?x@@3HC"
.cv_loc 0 1 16 5 # t.cpp:16:5
addl $7, "?x@@3HC"
.cv_loc 0 1 17 1 # t.cpp:17:1
popl %eax
retl
Lfunc_end0:
.section .debug$T,"dr"
.long 4
.short 6
.short 4609
.long 0
.short 14
.short 4104
.asciz "\003\000\000\000\000\000\000\000\000\020\000"
.short 14
.short 5633
.asciz "\000\000\000\000\001\020\000"
.ascii "baz"
.byte 0
.short 14
.short 5633
.asciz "\000\000\000\000\001\020\000"
.ascii "bar"
.byte 0
.short 14
.short 5633
.asciz "\000\000\000\000\001\020\000"
.ascii "foo"
.byte 0
.section .debug$S,"dr"
.long 4
.long 241 # Symbol subsection for baz
.long Ltmp1-Ltmp0
Ltmp0:
.short Ltmp3-Ltmp2
Ltmp2:
.short 4423
.zero 12
.long Lfunc_end0-"?baz@@YAXXZ"
.zero 12
.secrel32 "?baz@@YAXXZ"
.secidx "?baz@@YAXXZ"
.byte 0
.ascii "baz"
.byte 0
Ltmp3:
.short Ltmp5-Ltmp4
Ltmp4:
.short 4429
.asciz "\000\000\000\000\000\000\000\000\003\020\000"
.cv_inline_linetable 1 1 9 Lfunc_begin0 Lfunc_end0
# CHECK: InlineSiteSym {
# CHECK: PtrParent: 0x0
# CHECK: PtrEnd: 0x0
# CHECK: Inlinee: bar (0x1003)
# CHECK: BinaryAnnotations [
# CHECK-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x8, LineOffset: 0}
# CHECK-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x7, LineOffset: 1}
# CHECK-NEXT: ChangeLineOffset: 1
# CHECK-NEXT: ChangeCodeOffset: 0x1E
# CHECK-NEXT: ChangeCodeLength: 0x7
# CHECK-NEXT: ]
# CHECK: }
Ltmp5:
.short Ltmp7-Ltmp6
Ltmp6:
.short 4429
.asciz "\000\000\000\000\000\000\000\000\004\020\000"
.cv_inline_linetable 2 1 3 Lfunc_begin0 Lfunc_end0
# CHECK: InlineSiteSym {
# CHECK: PtrParent: 0x0
# CHECK: PtrEnd: 0x0
# CHECK: Inlinee: foo (0x1004)
# CHECK: BinaryAnnotations [
# CHECK-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xF, LineOffset: 0}
# CHECK-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0xA, LineOffset: 1}
# CHECK-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x6, LineOffset: 1}
# CHECK-NEXT: ChangeCodeOffsetAndLineOffset: {CodeOffset: 0x7, LineOffset: 1}
# CHECK-NEXT: ChangeCodeLength: 0x7
# CHECK-NEXT: ]
# CHECK: }
Ltmp7:
.short 2
.short 4430
# CHECK: InlineSiteEnd {
# CHECK: }
.short 2
.short 4430
# CHECK: InlineSiteEnd {
# CHECK: }
.short 2
.short 4431
Ltmp1:
.p2align 2
.cv_linetable 0, "?baz@@YAXXZ", Lfunc_end0
.cv_filechecksums # File index to string table offset subsection
.cv_stringtable # String table
# CHECK-LABEL: FunctionLineTable [
# CHECK: LinkageName: ?baz@@YAXXZ
# CHECK: Flags: 0x1
# CHECK: CodeSize: 0x3D
# CHECK: FilenameSegment [
# CHECK: Filename: D:\src\llvm\build\t.cpp (0x0)
# CHECK: +0x0 [
# CHECK: LineNumberStart: 13
# CHECK: ]
# CHECK: +0x1 [
# CHECK: LineNumberStart: 14
# CHECK: ]
# CHECK: +0x8 [
# CHECK: LineNumberStart: 15
# CHECK: ]
# There shouldn't be any other line number entries because all the other
# .cv_locs are on line 15 where the top-level inline call site is.
# CHECK-NOT: LineNumberStart
# CHECK: +0x34 [
# CHECK: LineNumberStart: 16
# CHECK: ]
# CHECK: +0x3B [
# CHECK: LineNumberStart: 17
# CHECK: ]
# CHECK: ]
# CHECK: ]