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