Home | History | Annotate | Download | only in COFF
      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