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