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:      .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