gn build: Merge r374476
[llvm-complete.git] / test / MC / COFF / cv-loc-unreachable.s
blob5ac73e3774240db76ccb9cb5d79c0936a3e0da9a
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);
9 # int unlikely();
10 # static inline void do_exit() {
11 # if (unlikely()) {
12 # exit(32);
13 # }
14 # }
15 # void callit() {
16 # do_exit();
17 # }
20 # ASM: 00000000 _callit:
21 # begin inline {
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>
25 # } end inline
26 # ASM-NEXT: 9: c3 retl
27 # begin inline {
28 # ASM-NEXT: a: 6a 20 pushl $32
29 # ASM-NEXT: c: ff 15 00 00 00 00 calll *0
30 # } end inline
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)
43 .text
44 .def _callit; .scl 2; .type 32; .endef
45 .globl _callit # -- Begin function callit
46 _callit: # @callit
47 Lfunc_begin0:
48 .cv_func_id 0
49 .cv_fpo_proc _callit 0
50 # %bb.0: # %entry
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
54 calll _unlikely
55 testl %eax, %eax
56 jne LBB0_1
57 Ltmp0:
58 # %bb.2: # %do_exit.exit
59 .cv_loc 0 1 10 0 # t.cpp:10:0
60 retl
61 LBB0_1: # %if.then.i
62 Ltmp1:
63 .cv_loc 1 1 5 0 # t.cpp:5:0
64 pushl $32
65 calll *__imp__exit
66 # EXTRA
67 .cv_loc 1 1 6 0 # t.cpp:6:0
68 Ltmp2:
69 .cv_fpo_endproc
70 Lfunc_end0:
71 # -- End function
73 .section .debug$S,"dr"
74 .p2align 2
75 .long 4 # Debug section magic
76 .long 241
77 .long Ltmp4-Ltmp3 # Subsection size
78 Ltmp3:
79 .short Ltmp6-Ltmp5 # Record length
80 Ltmp5:
81 .short 4412 # Record kind: S_COMPILE3
82 .long 0 # Flags and language
83 .short 7 # CPUType
84 .short 7 # Frontend version
85 .short 0
86 .short 0
87 .short 0
88 .short 7000 # Backend version
89 .short 0
90 .short 0
91 .short 0
92 .asciz "clang version 7.0.0 " # Null-terminated compiler version string
93 Ltmp6:
94 Ltmp4:
95 .p2align 2
96 .long 246 # Inlinee lines subsection
97 .long Ltmp8-Ltmp7 # Subsection size
98 Ltmp7:
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
105 Ltmp8:
106 .p2align 2
107 .cv_fpo_data _callit
108 .long 241 # Symbol subsection for callit
109 .long Ltmp10-Ltmp9 # Subsection size
110 Ltmp9:
111 .short Ltmp12-Ltmp11 # Record length
112 Ltmp11:
113 .short 4423 # Record kind: S_GPROC32_ID
114 .long 0 # PtrParent
115 .long 0 # PtrEnd
116 .long 0 # PtrNext
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
123 .byte 0 # Flags
124 .asciz "callit" # Function name
125 Ltmp12:
126 .short Ltmp14-Ltmp13 # Record length
127 Ltmp13:
128 .short 4429 # Record kind: S_INLINESITE
129 .long 0 # PtrParent
130 .long 0 # PtrEnd
131 .long 4098 # Inlinee type index
132 .cv_inline_linetable 1 1 3 Lfunc_begin0 Lfunc_end0
133 Ltmp14:
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
138 Ltmp10:
139 .p2align 2
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"
144 .p2align 2
145 .long 4 # Debug section magic
146 # ArgList (0x1000) {
147 # TypeLeafKind: LF_ARGLIST (0x1201)
148 # NumArgs: 0
149 # Arguments [
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)
160 # NumParameters: 0
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
167 # FuncId (0x1002) {
168 # TypeLeafKind: LF_FUNC_ID (0x1601)
169 # ParentScope: 0x0
170 # FunctionType: void () (0x1001)
171 # Name: do_exit
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
178 # FuncId (0x1003) {
179 # TypeLeafKind: LF_FUNC_ID (0x1601)
180 # ParentScope: 0x0
181 # FunctionType: void () (0x1001)
182 # Name: callit
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