1 ; RUN: llc -mcpu=core2 -mtriple=i686-pc-win32 -O0 < %s | FileCheck --check-prefix=X86 %s 2 ; RUN: llc -mcpu=core2 -mtriple=i686-pc-win32 -o - -O0 < %s | llvm-mc -triple=i686-pc-win32 -filetype=obj | llvm-readobj -s -sr -codeview -section-symbols | FileCheck --check-prefix=OBJ32 %s 3 ; RUN: llc -mcpu=core2 -mtriple=x86_64-pc-win32 -O0 < %s | FileCheck --check-prefix=X64 %s 4 ; RUN: llc -mcpu=core2 -mtriple=x86_64-pc-win32 -o - -O0 < %s | llvm-mc -triple=x86_64-pc-win32 -filetype=obj | llvm-readobj -s -sr -codeview -section-symbols | FileCheck --check-prefix=OBJ64 %s 5 6 ; This LL file was generated by running clang on the following code: 7 ; D:\source.c: 8 ; 1 void z(void); 9 ; 2 10 ; 3 void x(void) { 11 ; 4 z(); 12 ; 5 } 13 ; 6 14 ; 7 void y(void) { 15 ; 8 z(); 16 ; 9 } 17 ; 10 18 ; 11 void f(void) { 19 ; 12 x(); 20 ; 13 y(); 21 ; 14 z(); 22 ; 15 } 23 24 25 ; X86-LABEL: _x: 26 ; X86: # %bb. 27 ; X86: .cv_file 1 "D:\\source.c" 28 ; X86: .cv_loc 0 1 4 42 is_stmt 0 # source.c:4:42 29 ; X86: calll _z 30 ; X86: .cv_loc 0 1 5 43 # source.c:5:43 31 ; X86: ret 32 ; X86: [[END_OF_X:.?Lfunc_end.*]]: 33 ; 34 ; X86-LABEL: _y: 35 ; X86: # %bb. 36 ; X86: .cv_loc 1 1 8 52 # source.c:8:52 37 ; X86: calll _z 38 ; X86: .cv_loc 1 1 9 53 # source.c:9:53 39 ; X86: ret 40 ; X86: [[END_OF_Y:.?Lfunc_end.*]]: 41 ; 42 ; X86-LABEL: _f: 43 ; X86: # %bb. 44 ; X86: .cv_loc 2 1 12 62 # source.c:12:62 45 ; X86: calll _x 46 ; X86: .cv_loc 2 1 13 63 # source.c:13:63 47 ; X86: calll _y 48 ; X86: .cv_loc 2 1 14 72 # source.c:14:72 49 ; X86: calll _z 50 ; X86: .cv_loc 2 1 15 73 # source.c:15:73 51 ; X86: ret 52 ; X86: [[END_OF_F:.?Lfunc_end.*]]: 53 ; 54 ; X86-LABEL: .section .debug$S,"dr" 55 ; X86-NEXT: .p2align 2 56 ; X86-NEXT: .long 4 57 ; X86-NEXT: .long 241 58 ; X86-NEXT: .long [[COMPILE_END:.*]]-[[COMPILE_START:.*]] # 59 ; Compiler information record 60 ; X86-NEXT: [[COMPILE_START]]: 61 ; X86-NEXT: .short [[C1_END:.*]]-[[C1_START:.*]] # 62 ; X86: [[COMPILE_END]]: 63 ; X86-NEXT: .p2align 2 64 ; X86-NEXT: .cv_fpo_data _x 65 ; Symbol subsection for x 66 ; X86-NEXT: .long 241 67 ; X86-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]] # 68 ; X86-NEXT: [[F1_START]]: 69 ; X86-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]] # 70 ; X86-NEXT: [[PROC_SEGMENT_START]]: 71 ; X86-NEXT: .short 4422 72 ; X86-NEXT: .long 0 73 ; X86-NEXT: .long 0 74 ; X86-NEXT: .long 0 75 ; X86-NEXT: .long [[END_OF_X]]-_x 76 ; X86-NEXT: .long 0 77 ; X86-NEXT: .long 0 78 ; X86-NEXT: .long 4098 79 ; X86-NEXT: .secrel32 _x 80 ; X86-NEXT: .secidx _x 81 ; X86-NEXT: .byte 0 82 ; X86-NEXT: .asciz "x" 83 ; X86-NEXT: [[PROC_SEGMENT_END]]: 84 ; X86-NEXT: .short 2 85 ; X86-NEXT: .short 4431 86 ; X86-NEXT: [[F1_END]]: 87 ; X86-NEXT: .p2align 2 88 ; Line table subsection for x 89 ; X86: .cv_linetable 0, _x, [[END_OF_X]] 90 ; Symbol subsection for y 91 ; X86-NEXT: .cv_fpo_data _y 92 ; X86-NEXT: .long 241 93 ; X86-NEXT: .long [[COMPILE_END:.*]]-[[COMPILE_START:.*]] # 94 ; X86-NEXT: [[COMPILE_START]]: 95 ; X86-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]] # 96 ; X86-NEXT: [[PROC_SEGMENT_START]]: 97 ; X86-NEXT: .short 4423 98 ; X86-NEXT: .long 0 99 ; X86-NEXT: .long 0 100 ; X86-NEXT: .long 0 101 ; X86-NEXT: .long [[END_OF_Y]]-_y 102 ; X86-NEXT: .long 0 103 ; X86-NEXT: .long 0 104 ; X86-NEXT: .long 4099 105 ; X86-NEXT: .secrel32 _y 106 ; X86-NEXT: .secidx _y 107 ; X86-NEXT: .byte 0 108 ; X86-NEXT: .asciz "y" 109 ; X86-NEXT: [[PROC_SEGMENT_END]]: 110 ; X86-NEXT: .short 2 111 ; X86-NEXT: .short 4431 112 ; X86-NEXT: [[COMPILE_END]]: 113 ; X86-NEXT: .p2align 2 114 ; Line table subsection for y 115 ; X86: .cv_linetable 1, _y, [[END_OF_Y]] 116 ; Symbol subsection for f 117 ; X86-NEXT: .cv_fpo_data _f 118 ; X86-NEXT: .long 241 119 ; X86-NEXT: .long [[COMPILE_END:.*]]-[[COMPILE_START:.*]] # 120 ; X86-NEXT: [[COMPILE_START]]: 121 ; X86-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]] # 122 ; X86-NEXT: [[PROC_SEGMENT_START]]: 123 ; X86-NEXT: .short 4423 124 ; X86-NEXT: .long 0 125 ; X86-NEXT: .long 0 126 ; X86-NEXT: .long 0 127 ; X86-NEXT: .long [[END_OF_F]]-_f 128 ; X86-NEXT: .long 0 129 ; X86-NEXT: .long 0 130 ; X86-NEXT: .long 4100 131 ; X86-NEXT: .secrel32 _f 132 ; X86-NEXT: .secidx _f 133 ; X86-NEXT: .byte 0 134 ; X86-NEXT: .asciz "f" 135 ; X86-NEXT: [[PROC_SEGMENT_END]]: 136 ; X86-NEXT: .short 2 137 ; X86-NEXT: .short 4431 138 ; X86-NEXT: [[COMPILE_END]]: 139 ; X86-NEXT: .p2align 2 140 ; Line table subsection for f 141 ; X86: .cv_linetable 2, _f, [[END_OF_F]] 142 ; X86: .cv_filechecksums 143 ; X86: .cv_stringtable 144 145 ; OBJ32: Section { 146 ; OBJ32: Name: .debug$S (2E 64 65 62 75 67 24 53) 147 ; OBJ32: Characteristics [ (0x42300040) 148 ; OBJ32: ] 149 ; OBJ32: Subsection [ 150 ; OBJ32-NEXT: SubSectionType: Symbols (0xF1) 151 ; OBJ32: Compile3Sym 152 ; OBJ32: ] 153 ; OBJ32: Subsection [ 154 ; OBJ32-NEXT: SubSectionType: FrameData (0xF5) 155 ; OBJ32: ] 156 ; OBJ32: Subsection [ 157 ; OBJ32-NEXT: SubSectionType: Symbols (0xF1) 158 ; OBJ32: {{.*}}Proc{{.*}}Sym { 159 ; OBJ32: Kind: S_LPROC32_ID (0x1146) 160 ; OBJ32: CodeSize: 0x6 161 ; OBJ32: DisplayName: x 162 ; OBJ32: LinkageName: _x 163 ; OBJ32: } 164 ; OBJ32: ProcEnd { 165 ; OBJ32: } 166 ; OBJ32-NEXT: ] 167 ; OBJ32: Subsection [ 168 ; OBJ32-NEXT: SubSectionType: Lines (0xF2) 169 ; OBJ32: ] 170 ; OBJ32: Subsection [ 171 ; OBJ32-NEXT: SubSectionType: FrameData (0xF5) 172 ; OBJ32: ] 173 ; OBJ32: Subsection [ 174 ; OBJ32-NEXT: SubSectionType: Symbols (0xF1) 175 ; OBJ32: {{.*}}Proc{{.*}}Sym { 176 ; OBJ32: Kind: S_GPROC32_ID (0x1147) 177 ; OBJ32: CodeSize: 0x6 178 ; OBJ32: DisplayName: y 179 ; OBJ32: LinkageName: _y 180 ; OBJ32: } 181 ; OBJ32: ProcEnd { 182 ; OBJ32: } 183 ; OBJ32-NEXT: ] 184 ; OBJ32: Subsection [ 185 ; OBJ32-NEXT: SubSectionType: Lines (0xF2) 186 ; OBJ32: ] 187 ; OBJ32: Subsection [ 188 ; OBJ32-NEXT: SubSectionType: FrameData (0xF5) 189 ; OBJ32: ] 190 ; OBJ32: Subsection [ 191 ; OBJ32-NEXT: SubSectionType: Symbols (0xF1) 192 ; OBJ32: {{.*}}Proc{{.*}}Sym { 193 ; OBJ32: Kind: S_GPROC32_ID (0x1147) 194 ; OBJ32: CodeSize: 0x10 195 ; OBJ32: DisplayName: f 196 ; OBJ32: LinkageName: _f 197 ; OBJ32: } 198 ; OBJ32: ProcEnd { 199 ; OBJ32: } 200 ; OBJ32-NEXT: ] 201 ; OBJ32: Subsection [ 202 ; OBJ32-NEXT: SubSectionType: Lines (0xF2) 203 ; OBJ32: ] 204 ; OBJ32: FunctionLineTable [ 205 ; OBJ32-NEXT: Name: _x 206 ; OBJ32-NEXT: Flags: 0x1 207 ; OBJ32-NEXT: CodeSize: 0x6 208 ; OBJ32-NEXT: FilenameSegment [ 209 ; OBJ32-NEXT: Filename: D:\source.c 210 ; OBJ32-NEXT: +0x0 [ 211 ; OBJ32-NEXT: LineNumberStart: 4 212 ; OBJ32-NEXT: LineNumberEndDelta: 0 213 ; OBJ32-NEXT: IsStatement: No 214 ; OBJ32-NEXT: ColStart: 42 215 ; OBJ32-NEXT: ColEnd: 0 216 ; OBJ32-NEXT: ] 217 ; OBJ32-NEXT: +0x5 [ 218 ; OBJ32-NEXT: LineNumberStart: 5 219 ; OBJ32-NEXT: LineNumberEndDelta: 0 220 ; OBJ32-NEXT: IsStatement: No 221 ; OBJ32-NEXT: ColStart: 43 222 ; OBJ32-NEXT: ColEnd: 0 223 ; OBJ32-NEXT: ] 224 ; OBJ32-NEXT: ] 225 ; OBJ32-NEXT: ] 226 ; OBJ32-NEXT: FunctionLineTable [ 227 ; OBJ32-NEXT: LinkageName: _y 228 ; OBJ32-NEXT: Flags: 0x1 229 ; OBJ32-NEXT: CodeSize: 0x6 230 ; OBJ32-NEXT: FilenameSegment [ 231 ; OBJ32-NEXT: Filename: D:\source.c 232 ; OBJ32-NEXT: +0x0 [ 233 ; OBJ32-NEXT: LineNumberStart: 8 234 ; OBJ32-NEXT: LineNumberEndDelta: 0 235 ; OBJ32-NEXT: IsStatement: No 236 ; OBJ32-NEXT: ColStart: 52 237 ; OBJ32-NEXT: ColEnd: 0 238 ; OBJ32-NEXT: ] 239 ; OBJ32-NEXT: +0x5 [ 240 ; OBJ32-NEXT: LineNumberStart: 9 241 ; OBJ32-NEXT: LineNumberEndDelta: 0 242 ; OBJ32-NEXT: IsStatement: No 243 ; OBJ32-NEXT: ColStart: 53 244 ; OBJ32-NEXT: ColEnd: 0 245 ; OBJ32-NEXT: ] 246 ; OBJ32-NEXT: ] 247 ; OBJ32-NEXT: ] 248 ; OBJ32-NEXT: FunctionLineTable [ 249 ; OBJ32-NEXT: LinkageName: _f 250 ; OBJ32-NEXT: Flags: 0x1 251 ; OBJ32-NEXT: CodeSize: 0x10 252 ; OBJ32-NEXT: FilenameSegment [ 253 ; OBJ32-NEXT: Filename: D:\source.c 254 ; OBJ32-NEXT: +0x0 [ 255 ; OBJ32-NEXT: LineNumberStart: 12 256 ; OBJ32-NEXT: LineNumberEndDelta: 0 257 ; OBJ32-NEXT: IsStatement: No 258 ; OBJ32-NEXT: ColStart: 62 259 ; OBJ32-NEXT: ColEnd: 0 260 ; OBJ32-NEXT: ] 261 ; OBJ32-NEXT: +0x5 [ 262 ; OBJ32-NEXT: LineNumberStart: 13 263 ; OBJ32-NEXT: LineNumberEndDelta: 0 264 ; OBJ32-NEXT: IsStatement: No 265 ; OBJ32-NEXT: ColStart: 63 266 ; OBJ32-NEXT: ColEnd: 0 267 ; OBJ32-NEXT: ] 268 ; OBJ32-NEXT: +0xA [ 269 ; OBJ32-NEXT: LineNumberStart: 14 270 ; OBJ32-NEXT: LineNumberEndDelta: 0 271 ; OBJ32-NEXT: IsStatement: No 272 ; OBJ32-NEXT: ColStart: 72 273 ; OBJ32-NEXT: ColEnd: 0 274 ; OBJ32-NEXT: ] 275 ; OBJ32-NEXT: +0xF [ 276 ; OBJ32-NEXT: LineNumberStart: 15 277 ; OBJ32-NEXT: LineNumberEndDelta: 0 278 ; OBJ32-NEXT: IsStatement: No 279 ; OBJ32-NEXT: ColStart: 73 280 ; OBJ32-NEXT: ColEnd: 0 281 ; OBJ32-NEXT: ] 282 ; OBJ32-NEXT: ] 283 ; OBJ32-NEXT: ] 284 285 286 ; X64-LABEL: x: 287 ; X64-NEXT: .L{{.*}}: 288 ; X64: .cv_file 1 "D:\\source.c" 289 ; X64: .cv_loc 0 1 3 0 is_stmt 0 # source.c:3:0 290 ; X64: # %bb. 291 ; X64: subq $40, %rsp 292 ; X64: .cv_loc 0 1 4 42 # source.c:4:42 293 ; X64-NEXT: callq z 294 ; X64: .cv_loc 0 1 5 43 # source.c:5:43 295 ; X64: addq $40, %rsp 296 ; X64-NEXT: ret 297 ; X64: [[END_OF_X:.?Lfunc_end.*]]: 298 ; 299 ; X64-LABEL: y: 300 ; X64-NEXT: .L{{.*}}: 301 ; X64: .cv_loc 1 1 7 0 # source.c:7:0 302 ; X64: # %bb. 303 ; X64: subq $40, %rsp 304 ; X64: .cv_loc 1 1 8 52 # source.c:8:52 305 ; X64-NEXT: callq z 306 ; X64: .cv_loc 1 1 9 53 # source.c:9:53 307 ; X64: addq $40, %rsp 308 ; X64-NEXT: ret 309 ; X64: [[END_OF_Y:.?Lfunc_end.*]]: 310 ; 311 ; X64-LABEL: f: 312 ; X64-NEXT: .L{{.*}}: 313 ; X64: .cv_loc 2 1 11 0 # source.c:11:0 314 ; X64: # %bb. 315 ; X64: subq $40, %rsp 316 ; X64: .cv_loc 2 1 12 62 # source.c:12:62 317 ; X64-NEXT: callq x 318 ; X64: .cv_loc 2 1 13 63 # source.c:13:63 319 ; X64: callq y 320 ; X64: .cv_loc 2 1 14 72 # source.c:14:72 321 ; X64: callq z 322 ; X64: .cv_loc 2 1 15 73 # source.c:15:73 323 ; X64: addq $40, %rsp 324 ; X64-NEXT: ret 325 ; X64: [[END_OF_F:.?Lfunc_end.*]]: 326 ; 327 328 ; X64-LABEL: .section .debug$S,"dr" 329 ; X64-NEXT: .p2align 2 330 ; X64-NEXT: .long 4 331 ; X64-NEXT: .long 241 332 ; X64-NEXT: .long [[COMPILE_END:.*]]-[[COMPILE_START:.*]] # 333 ; Compiler information record 334 ; X64-NEXT: [[COMPILE_START]]: 335 ; X64-NEXT: .short [[C1_END:.*]]-[[C1_START:.*]] # 336 ; X64: [[COMPILE_END]]: 337 ; X64-NEXT: .p2align 2 338 ; Symbol subsection for x 339 ; X64-NEXT: .long 241 340 ; X64-NEXT: .long [[F1_END:.*]]-[[F1_START:.*]] # 341 ; X64-NEXT: [[F1_START]]: 342 ; X64-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]] # 343 ; X64-NEXT: [[PROC_SEGMENT_START]]: 344 ; X64-NEXT: .short 4422 345 ; X64-NEXT: .long 0 346 ; X64-NEXT: .long 0 347 ; X64-NEXT: .long 0 348 ; X64-NEXT: .long [[END_OF_X]]-x 349 ; X64-NEXT: .long 0 350 ; X64-NEXT: .long 0 351 ; X64-NEXT: .long 4098 352 ; X64-NEXT: .secrel32 x 353 ; X64-NEXT: .secidx x 354 ; X64-NEXT: .byte 0 355 ; X64-NEXT: .asciz "x" 356 ; X64-NEXT: [[PROC_SEGMENT_END]]: 357 ; X64-NEXT: .short 2 358 ; X64-NEXT: .short 4431 359 ; X64-NEXT: [[F1_END]]: 360 ; X64-NEXT: .p2align 2 361 ; Line table subsection for x 362 ; X64: .cv_linetable 0, x, [[END_OF_X]] 363 ; Symbol subsection for y 364 ; X64-NEXT: .long 241 365 ; X64-NEXT: .long [[COMPILE_END:.*]]-[[COMPILE_START:.*]] # 366 ; X64-NEXT: [[COMPILE_START]]: 367 ; X64-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]] # 368 ; X64-NEXT: [[PROC_SEGMENT_START]]: 369 ; X64-NEXT: .short 4423 370 ; X64-NEXT: .long 0 371 ; X64-NEXT: .long 0 372 ; X64-NEXT: .long 0 373 ; X64-NEXT: .long [[END_OF_Y]]-y 374 ; X64-NEXT: .long 0 375 ; X64-NEXT: .long 0 376 ; X64-NEXT: .long 4099 377 ; X64-NEXT: .secrel32 y 378 ; X64-NEXT: .secidx y 379 ; X64-NEXT: .byte 0 380 ; X64-NEXT: .asciz "y" 381 ; X64-NEXT: [[PROC_SEGMENT_END]]: 382 ; X64-NEXT: .short 2 383 ; X64-NEXT: .short 4431 384 ; X64-NEXT: [[COMPILE_END]]: 385 ; X64-NEXT: .p2align 2 386 ; Line table subsection for y 387 ; X64: .cv_linetable 1, y, [[END_OF_Y]] 388 ; Symbol subsection for f 389 ; X64-NEXT: .long 241 390 ; X64-NEXT: .long [[COMPILE_END:.*]]-[[COMPILE_START:.*]] # 391 ; X64: [[COMPILE_START]]: 392 ; X64-NEXT: .short [[PROC_SEGMENT_END:.*]]-[[PROC_SEGMENT_START:.*]] # 393 ; X64-NEXT: [[PROC_SEGMENT_START]]: 394 ; X64-NEXT: .short 4423 395 ; X64-NEXT: .long 0 396 ; X64-NEXT: .long 0 397 ; X64-NEXT: .long 0 398 ; X64-NEXT: .long [[END_OF_F]]-f 399 ; X64-NEXT: .long 0 400 ; X64-NEXT: .long 0 401 ; X64-NEXT: .long 4100 402 ; X64-NEXT: .secrel32 f 403 ; X64-NEXT: .secidx f 404 ; X64-NEXT: .byte 0 405 ; X64-NEXT: .asciz "f" 406 ; X64-NEXT: [[PROC_SEGMENT_END]]: 407 ; X64-NEXT: .short 2 408 ; X64-NEXT: .short 4431 409 ; X64-NEXT: [[COMPILE_END]]: 410 ; X64-NEXT: .p2align 2 411 ; Line table subsection for f 412 ; X64: .cv_linetable 2, f, [[END_OF_F]] 413 ; File index to string table offset subsection 414 ; X64: .cv_filechecksums 415 ; String table 416 ; X64: .cv_stringtable 417 418 ; OBJ64: Section { 419 ; OBJ64: Name: .debug$S (2E 64 65 62 75 67 24 53) 420 ; OBJ64: Characteristics [ (0x42300040) 421 ; OBJ64: ] 422 ; OBJ64: Relocations [ 423 ; OBJ64-NEXT: 0x64 IMAGE_REL_AMD64_SECREL x 424 ; OBJ64-NEXT: 0x68 IMAGE_REL_AMD64_SECTION x 425 ; OBJ64-NEXT: 0x7C IMAGE_REL_AMD64_SECREL x 426 ; OBJ64-NEXT: 0x80 IMAGE_REL_AMD64_SECTION x 427 ; OBJ64-NEXT: 0xE0 IMAGE_REL_AMD64_SECREL y 428 ; OBJ64-NEXT: 0xE4 IMAGE_REL_AMD64_SECTION y 429 ; OBJ64-NEXT: 0xF8 IMAGE_REL_AMD64_SECREL y 430 ; OBJ64-NEXT: 0xFC IMAGE_REL_AMD64_SECTION y 431 ; OBJ64-NEXT: 0x15C IMAGE_REL_AMD64_SECREL f 432 ; OBJ64-NEXT: 0x160 IMAGE_REL_AMD64_SECTION f 433 ; OBJ64-NEXT: 0x174 IMAGE_REL_AMD64_SECREL f 434 ; OBJ64-NEXT: 0x178 IMAGE_REL_AMD64_SECTION f 435 ; OBJ64-NEXT: ] 436 ; OBJ64: Subsection [ 437 ; OBJ64-NEXT: SubSectionType: Symbols (0xF1) 438 ; OBJ64: {{.*}}Proc{{.*}}Sym { 439 ; OBJ64: Kind: S_LPROC32_ID (0x1146) 440 ; OBJ64: CodeSize: 0xE 441 ; OBJ64: DisplayName: x 442 ; OBJ64: LinkageName: x 443 ; OBJ64: } 444 ; OBJ64: ProcEnd { 445 ; OBJ64: } 446 ; OBJ64-NEXT: ] 447 ; OBJ64: Subsection [ 448 ; OBJ64-NEXT: SubSectionType: Lines (0xF2) 449 ; OBJ64: ] 450 ; OBJ64: Subsection [ 451 ; OBJ64-NEXT: SubSectionType: Symbols (0xF1) 452 ; OBJ64: {{.*}}Proc{{.*}}Sym { 453 ; OBJ64: Kind: S_GPROC32_ID (0x1147) 454 ; OBJ64: CodeSize: 0xE 455 ; OBJ64: DisplayName: y 456 ; OBJ64: LinkageName: y 457 ; OBJ64: } 458 ; OBJ64: ProcEnd { 459 ; OBJ64: } 460 ; OBJ64-NEXT: ] 461 ; OBJ64: Subsection [ 462 ; OBJ64-NEXT: SubSectionType: Lines (0xF2) 463 ; OBJ64: ] 464 ; OBJ64: Subsection [ 465 ; OBJ64-NEXT: SubSectionType: Symbols (0xF1) 466 ; OBJ64: {{.*}}Proc{{.*}}Sym { 467 ; OBJ64: Kind: S_GPROC32_ID (0x1147) 468 ; OBJ64: CodeSize: 0x18 469 ; OBJ64: DisplayName: f 470 ; OBJ64: LinkageName: f 471 ; OBJ64: } 472 ; OBJ64: ProcEnd { 473 ; OBJ64: } 474 ; OBJ64-NEXT: ] 475 ; OBJ64: Subsection [ 476 ; OBJ64-NEXT: SubSectionType: Lines (0xF2) 477 ; OBJ64: ] 478 ; OBJ64: FunctionLineTable [ 479 ; OBJ64-NEXT: LinkageName: x 480 ; OBJ64-NEXT: Flags: 0x1 481 ; OBJ64-NEXT: CodeSize: 0xE 482 ; OBJ64-NEXT: FilenameSegment [ 483 ; OBJ64-NEXT: Filename: D:\source.c 484 ; OBJ64-NEXT: +0x0 [ 485 ; OBJ64-NEXT: LineNumberStart: 3 486 ; OBJ64-NEXT: LineNumberEndDelta: 0 487 ; OBJ64-NEXT: IsStatement: No 488 ; OBJ64-NEXT: ColStart: 0 489 ; OBJ64-NEXT: ColEnd: 0 490 ; OBJ64-NEXT: ] 491 ; OBJ64-NEXT: +0x4 [ 492 ; OBJ64-NEXT: LineNumberStart: 4 493 ; OBJ64-NEXT: LineNumberEndDelta: 0 494 ; OBJ64-NEXT: IsStatement: No 495 ; OBJ64-NEXT: ColStart: 42 496 ; OBJ64-NEXT: ColEnd: 0 497 ; OBJ64-NEXT: ] 498 ; OBJ64-NEXT: +0x9 [ 499 ; OBJ64-NEXT: LineNumberStart: 5 500 ; OBJ64-NEXT: LineNumberEndDelta: 0 501 ; OBJ64-NEXT: IsStatement: No 502 ; OBJ64-NEXT: ColStart: 43 503 ; OBJ64-NEXT: ColEnd: 0 504 ; OBJ64-NEXT: ] 505 ; OBJ64-NEXT: ] 506 ; OBJ64-NEXT: ] 507 ; OBJ64-NEXT: FunctionLineTable [ 508 ; OBJ64-NEXT: LinkageName: y 509 ; OBJ64-NEXT: Flags: 0x1 510 ; OBJ64-NEXT: CodeSize: 0xE 511 ; OBJ64-NEXT: FilenameSegment [ 512 ; OBJ64-NEXT: Filename: D:\source.c 513 ; OBJ64-NEXT: +0x0 [ 514 ; OBJ64-NEXT: LineNumberStart: 7 515 ; OBJ64-NEXT: LineNumberEndDelta: 0 516 ; OBJ64-NEXT: IsStatement: No 517 ; OBJ64-NEXT: ColStart: 0 518 ; OBJ64-NEXT: ColEnd: 0 519 ; OBJ64-NEXT: ] 520 ; OBJ64-NEXT: +0x4 [ 521 ; OBJ64-NEXT: LineNumberStart: 8 522 ; OBJ64-NEXT: LineNumberEndDelta: 0 523 ; OBJ64-NEXT: IsStatement: No 524 ; OBJ64-NEXT: ColStart: 52 525 ; OBJ64-NEXT: ColEnd: 0 526 ; OBJ64-NEXT: ] 527 ; OBJ64-NEXT: +0x9 [ 528 ; OBJ64-NEXT: LineNumberStart: 9 529 ; OBJ64-NEXT: LineNumberEndDelta: 0 530 ; OBJ64-NEXT: IsStatement: No 531 ; OBJ64-NEXT: ColStart: 53 532 ; OBJ64-NEXT: ColEnd: 0 533 ; OBJ64-NEXT: ] 534 ; OBJ64-NEXT: ] 535 ; OBJ64-NEXT: ] 536 ; OBJ64-NEXT: FunctionLineTable [ 537 ; OBJ64-NEXT: LinkageName: f 538 ; OBJ64-NEXT: Flags: 0x1 539 ; OBJ64-NEXT: CodeSize: 0x18 540 ; OBJ64-NEXT: FilenameSegment [ 541 ; OBJ64-NEXT: Filename: D:\source.c 542 ; OBJ64-NEXT: +0x0 [ 543 ; OBJ64-NEXT: LineNumberStart: 11 544 ; OBJ64-NEXT: LineNumberEndDelta: 0 545 ; OBJ64-NEXT: IsStatement: No 546 ; OBJ64-NEXT: ColStart: 0 547 ; OBJ64-NEXT: ColEnd: 0 548 ; OBJ64-NEXT: ] 549 ; OBJ64-NEXT: +0x4 [ 550 ; OBJ64-NEXT: LineNumberStart: 12 551 ; OBJ64-NEXT: LineNumberEndDelta: 0 552 ; OBJ64-NEXT: IsStatement: No 553 ; OBJ64-NEXT: ColStart: 62 554 ; OBJ64-NEXT: ColEnd: 0 555 ; OBJ64-NEXT: ] 556 ; OBJ64-NEXT: +0x9 [ 557 ; OBJ64-NEXT: LineNumberStart: 13 558 ; OBJ64-NEXT: LineNumberEndDelta: 0 559 ; OBJ64-NEXT: IsStatement: No 560 ; OBJ64-NEXT: ColStart: 63 561 ; OBJ64-NEXT: ColEnd: 0 562 ; OBJ64-NEXT: ] 563 ; OBJ64-NEXT: +0xE [ 564 ; OBJ64-NEXT: LineNumberStart: 14 565 ; OBJ64-NEXT: LineNumberEndDelta: 0 566 ; OBJ64-NEXT: IsStatement: No 567 ; OBJ64-NEXT: ColStart: 72 568 ; OBJ64-NEXT: ColEnd: 0 569 ; OBJ64-NEXT: ] 570 ; OBJ64-NEXT: +0x13 [ 571 ; OBJ64-NEXT: LineNumberStart: 15 572 ; OBJ64-NEXT: LineNumberEndDelta: 0 573 ; OBJ64-NEXT: IsStatement: No 574 ; OBJ64-NEXT: ColStart: 73 575 ; OBJ64-NEXT: ColEnd: 0 576 ; OBJ64-NEXT: ] 577 ; OBJ64-NEXT: ] 578 ; OBJ64-NEXT: ] 579 580 ; Function Attrs: nounwind 581 define internal void @x() #0 !dbg !4 { 582 entry: 583 call void @z(), !dbg !14 584 ret void, !dbg !15 585 } 586 587 declare void @z() #1 588 589 ; Function Attrs: nounwind 590 define void @y() #0 !dbg !9 { 591 entry: 592 call void @z(), !dbg !16 593 ret void, !dbg !17 594 } 595 596 ; Function Attrs: nounwind 597 define void @f() #0 !dbg !10 { 598 entry: 599 call void @x(), !dbg !18 600 call void @y(), !dbg !19 601 call void @z(), !dbg !20 602 ret void, !dbg !21 603 } 604 605 attributes #0 = { nounwind "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 606 attributes #1 = { "less-precise-fpmad"="false" "no-frame-pointer-elim"="false" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "no-realign-stack" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 607 608 !llvm.dbg.cu = !{!0} 609 !llvm.module.flags = !{!11, !12} 610 !llvm.ident = !{!13} 611 612 !0 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5 ", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2) 613 !1 = !DIFile(filename: "<unknown>", directory: "D:\5C") 614 !2 = !{} 615 !4 = distinct !DISubprogram(name: "x", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 3, file: !5, scope: !6, type: !7, retainedNodes: !2) 616 !5 = !DIFile(filename: "source.c", directory: "D:\5C") 617 !6 = !DIFile(filename: "source.c", directory: "D:C") 618 !7 = !DISubroutineType(types: !8) 619 !8 = !{null} 620 !9 = distinct !DISubprogram(name: "y", line: 7, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 7, file: !5, scope: !6, type: !7, retainedNodes: !2) 621 !10 = distinct !DISubprogram(name: "f", line: 11, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 11, file: !5, scope: !6, type: !7, retainedNodes: !2) 622 !11 = !{i32 2, !"CodeView", i32 1} 623 !12 = !{i32 1, !"Debug Info Version", i32 3} 624 !13 = !{!"clang version 3.5 "} 625 !14 = !DILocation(line: 4, column: 42, scope: !4) 626 !15 = !DILocation(line: 5, column: 43, scope: !4) 627 !16 = !DILocation(line: 8, column: 52, scope: !9) 628 !17 = !DILocation(line: 9, column: 53, scope: !9) 629 !18 = !DILocation(line: 12, column: 62, scope: !10) 630 !19 = !DILocation(line: 13, column: 63, scope: !10) 631 !20 = !DILocation(line: 14, column: 72, scope: !10) 632 !21 = !DILocation(line: 15, column: 73, scope: !10) 633