1 # RUN: llvm-mc %s -triple=i686-pc-win32 -filetype=obj -o %t.obj
2 # RUN: llvm-objdump -d %t.obj | FileCheck %s --check-prefix=ASM
3 # RUN: llvm-pdbutil dump -il -symbols %t.obj | FileCheck %s --check-prefix=CODEVIEW
5 # Original source, slightly modified with an extra .cv_loc directive (at EXTRA
6 # below) that was causing assertions:
8 # void __declspec(noreturn) __declspec(dllimport) exit(int);
10 # static inline void do_exit() {
20 # ASM: 00000000 _callit:
22 # ASM-NEXT: 0: e8 00 00 00 00 calll 0 <_callit+0x5>
23 # ASM-NEXT: 5: 85 c0 testl %eax, %eax
24 # ASM-NEXT: 7: 75 01 jne 1 <_callit+0xa>
26 # ASM-NEXT: 9: c3 retl
28 # ASM-NEXT: a: 6a 20 pushl $32
29 # ASM-NEXT: c: ff 15 00 00 00 00 calll *0
32 # CODEVIEW: Inlinee | Line | Source File
33 # CODEVIEW: 0x1002 | 3 | C:\src\llvm-project\build\t.cpp (MD5: 0BC092F354CE14FDC2FA78F8EDE7426E)
35 # CODEVIEW: S_INLINESITE [size = 26]
36 # CODEVIEW-NEXT: inlinee = 0x1002 (do_exit), parent = 0, end = 0
37 # CODEVIEW-NEXT: 0602 line 1 (+1)
38 # CODEVIEW-NEXT: 0409 code end 0x9 (+0x9)
39 # CODEVIEW-NEXT: 0B21 code 0xA (+0x1) line 2 (+1)
40 # CODEVIEW-NEXT: 0B28 code 0x12 (+0x8) line 3 (+1)
41 # CODEVIEW-NEXT: 0400 code end 0x12 (+0x0)
44 .def _callit; .scl 2; .type 32; .endef
45 .globl _callit # -- Begin function callit
49 .cv_fpo_proc _callit 0
51 .cv_file 1 "C:\\src\\llvm-project\\build\\t.cpp" "0BC092F354CE14FDC2FA78F8EDE7426E" 1
52 .cv_inline_site_id 1 within 0 inlined_at 1 9 0
53 .cv_loc 1 1 4 0 is_stmt 0 # t.cpp:4:0
58 # %bb.2: # %do_exit.exit
59 .cv_loc 0 1 10 0 # t.cpp:10:0
63 .cv_loc 1 1 5 0 # t.cpp:5:0
67 .cv_loc 1 1 6 0 # t.cpp:6:0
73 .section .debug$S,"dr"
75 .long 4 # Debug section magic
77 .long Ltmp4-Ltmp3 # Subsection size
79 .short Ltmp6-Ltmp5 # Record length
81 .short 4412 # Record kind: S_COMPILE3
82 .long 0 # Flags and language
84 .short 7 # Frontend version
88 .short 7000 # Backend version
92 .asciz "clang version 7.0.0 " # Null-terminated compiler version string
96 .long 246 # Inlinee lines subsection
97 .long Ltmp8-Ltmp7 # Subsection size
99 .long 0 # Inlinee lines signature
101 # Inlined function do_exit starts at t.cpp:3
102 .long 4098 # Type index of inlined function
103 .cv_filechecksumoffset 1 # Offset into filechecksum table
104 .long 3 # Starting line number
108 .long 241 # Symbol subsection for callit
109 .long Ltmp10-Ltmp9 # Subsection size
111 .short Ltmp12-Ltmp11 # Record length
113 .short 4423 # Record kind: S_GPROC32_ID
117 .long Lfunc_end0-_callit # Code size
118 .long 0 # Offset after prologue
119 .long 0 # Offset before epilogue
120 .long 4099 # Function type index
121 .secrel32 _callit # Function section relative address
122 .secidx _callit # Function section index
124 .asciz "callit" # Function name
126 .short Ltmp14-Ltmp13 # Record length
128 .short 4429 # Record kind: S_INLINESITE
131 .long 4098 # Inlinee type index
132 .cv_inline_linetable 1 1 3 Lfunc_begin0 Lfunc_end0
134 .short 2 # Record length
135 .short 4430 # Record kind: S_INLINESITE_END
136 .short 2 # Record length
137 .short 4431 # Record kind: S_PROC_ID_END
140 .cv_linetable 0, _callit, Lfunc_end0
141 .cv_filechecksums # File index to string table offset subsection
142 .cv_stringtable # String table
143 .section .debug$T,"dr"
145 .long 4 # Debug section magic
147 # TypeLeafKind: LF_ARGLIST (0x1201)
152 .byte 0x06, 0x00, 0x01, 0x12
153 .byte 0x00, 0x00, 0x00, 0x00
154 # Procedure (0x1001) {
155 # TypeLeafKind: LF_PROCEDURE (0x1008)
156 # ReturnType: void (0x3)
157 # CallingConvention: NearC (0x0)
158 # FunctionOptions [ (0x0)
161 # ArgListType: () (0x1000)
163 .byte 0x0e, 0x00, 0x08, 0x10
164 .byte 0x03, 0x00, 0x00, 0x00
165 .byte 0x00, 0x00, 0x00, 0x00
166 .byte 0x00, 0x10, 0x00, 0x00
168 # TypeLeafKind: LF_FUNC_ID (0x1601)
170 # FunctionType: void () (0x1001)
173 .byte 0x12, 0x00, 0x01, 0x16
174 .byte 0x00, 0x00, 0x00, 0x00
175 .byte 0x01, 0x10, 0x00, 0x00
176 .byte 0x64, 0x6f, 0x5f, 0x65
177 .byte 0x78, 0x69, 0x74, 0x00
179 # TypeLeafKind: LF_FUNC_ID (0x1601)
181 # FunctionType: void () (0x1001)
184 .byte 0x12, 0x00, 0x01, 0x16
185 .byte 0x00, 0x00, 0x00, 0x00
186 .byte 0x01, 0x10, 0x00, 0x00
187 .byte 0x63, 0x61, 0x6c, 0x6c
188 .byte 0x69, 0x74, 0x00, 0xf1