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