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 631define void @x() #0 !dbg !4 { 632entry: 633 call void @z(), !dbg !14 634 ret void, !dbg !15 635} 636 637declare void @z() #1 638 639; Function Attrs: nounwind 640define void @y() #0 !dbg !9 { 641entry: 642 call void @z(), !dbg !16 643 ret void, !dbg !17 644} 645 646; Function Attrs: nounwind 647define void @f() #0 !dbg !10 { 648entry: 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 655attributes #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" } 656attributes #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