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