1; RUN: llc < %s -mtriple=nvptx64-nvidia-cuda | FileCheck %s 2 3; CHECK: .target sm_{{[0-9]+}}//, debug 4 5; CHECK: .visible .func (.param .b32 func_retval0) b( 6; CHECK: .param .b32 b_param_0 7; CHECK: ) 8; CHECK: { 9; CHECK: Lfunc_begin0: 10; CHECK: .loc 1 1 0 11; CHECK: .loc 1 1 0 12; CHECK: ret; 13; CHECK: Lfunc_end0: 14; CHECK: } 15 16; CHECK: .visible .func (.param .b32 func_retval0) a( 17; CHECK: .param .b32 a_param_0 18; CHECK: ) 19; CHECK: { 20; CHECK: Lfunc_begin1: 21; CHECK-NOT: .loc 22; CHECK: ret; 23; CHECK: Lfunc_end1: 24; CHECK: } 25 26; CHECK: .visible .func (.param .b32 func_retval0) d( 27; CHECK: .param .b32 d_param_0 28; CHECK: ) 29; CHECK: { 30; CHECK: Lfunc_begin2: 31; CHECK: .loc 1 3 0 32; CHECK: ret; 33; CHECK: Lfunc_end2: 34; CHECK: } 35 36; CHECK: .file 1 "{{.*}}b.c" 37 38; Function Attrs: nounwind uwtable 39define i32 @b(i32 %c) #0 !dbg !5 { 40entry: 41 %c.addr = alloca i32, align 4 42 store i32 %c, i32* %c.addr, align 4 43 call void @llvm.dbg.declare(metadata i32* %c.addr, metadata !13, metadata !DIExpression()), !dbg !14 44 %0 = load i32, i32* %c.addr, align 4, !dbg !14 45 %add = add nsw i32 %0, 1, !dbg !14 46 ret i32 %add, !dbg !14 47} 48 49; Function Attrs: nounwind uwtable 50define i32 @a(i32 %b) #0 { 51entry: 52 %b.addr = alloca i32, align 4 53 store i32 %b, i32* %b.addr, align 4 54 %0 = load i32, i32* %b.addr, align 4 55 %add = add nsw i32 %0, 1 56 ret i32 %add 57} 58 59; Function Attrs: nounwind readnone 60declare void @llvm.dbg.declare(metadata, metadata, metadata) #1 61 62; Function Attrs: nounwind uwtable 63define i32 @d(i32 %e) #0 !dbg !10 { 64entry: 65 %e.addr = alloca i32, align 4 66 store i32 %e, i32* %e.addr, align 4 67 call void @llvm.dbg.declare(metadata i32* %e.addr, metadata !15, metadata !DIExpression()), !dbg !16 68 %0 = load i32, i32* %e.addr, align 4, !dbg !16 69 %add = add nsw i32 %0, 1, !dbg !16 70 ret i32 %add, !dbg !16 71} 72 73; CHECK: // .section .debug_abbrev 74; CHECK: // { 75; CHECK: // .b8 1 // Abbreviation Code 76; CHECK: // .b8 17 // DW_TAG_compile_unit 77; CHECK: // .b8 1 // DW_CHILDREN_yes 78; CHECK: // .b8 37 // DW_AT_producer 79; CHECK: // .b8 8 // DW_FORM_string 80; CHECK: // .b8 19 // DW_AT_language 81; CHECK: // .b8 5 // DW_FORM_data2 82; CHECK: // .b8 3 // DW_AT_name 83; CHECK: // .b8 8 // DW_FORM_string 84; CHECK: // .b8 16 // DW_AT_stmt_list 85; CHECK: // .b8 6 // DW_FORM_data4 86; CHECK: // .b8 27 // DW_AT_comp_dir 87; CHECK: // .b8 8 // DW_FORM_string 88; CHECK: // .b8 17 // DW_AT_low_pc 89; CHECK: // .b8 1 // DW_FORM_addr 90; CHECK: // .b8 18 // DW_AT_high_pc 91; CHECK: // .b8 1 // DW_FORM_addr 92; CHECK: // .b8 0 // EOM(1) 93; CHECK: // .b8 0 // EOM(2) 94; CHECK: // .b8 2 // Abbreviation Code 95; CHECK: // .b8 46 // DW_TAG_subprogram 96; CHECK: // .b8 1 // DW_CHILDREN_yes 97; CHECK: // .b8 17 // DW_AT_low_pc 98; CHECK: // .b8 1 // DW_FORM_addr 99; CHECK: // .b8 18 // DW_AT_high_pc 100; CHECK: // .b8 1 // DW_FORM_addr 101; CHECK: // .b8 64 // DW_AT_frame_base 102; CHECK: // .b8 10 // DW_FORM_block1 103; CHECK: // .b8 3 // DW_AT_name 104; CHECK: // .b8 8 // DW_FORM_string 105; CHECK: // .b8 58 // DW_AT_decl_file 106; CHECK: // .b8 11 // DW_FORM_data1 107; CHECK: // .b8 59 // DW_AT_decl_line 108; CHECK: // .b8 11 // DW_FORM_data1 109; CHECK: // .b8 39 // DW_AT_prototyped 110; CHECK: // .b8 12 // DW_FORM_flag 111; CHECK: // .b8 73 // DW_AT_type 112; CHECK: // .b8 19 // DW_FORM_ref4 113; CHECK: // .b8 63 // DW_AT_external 114; CHECK: // .b8 12 // DW_FORM_flag 115; CHECK: // .b8 0 // EOM(1) 116; CHECK: // .b8 0 // EOM(2) 117; CHECK: // .b8 3 // Abbreviation Code 118; CHECK: // .b8 5 // DW_TAG_formal_parameter 119; CHECK: // .b8 0 // DW_CHILDREN_no 120; CHECK: // .b8 3 // DW_AT_name 121; CHECK: // .b8 8 // DW_FORM_string 122; CHECK: // .b8 58 // DW_AT_decl_file 123; CHECK: // .b8 11 // DW_FORM_data1 124; CHECK: // .b8 59 // DW_AT_decl_line 125; CHECK: // .b8 11 // DW_FORM_data1 126; CHECK: // .b8 73 // DW_AT_type 127; CHECK: // .b8 19 // DW_FORM_ref4 128; CHECK: // .b8 0 // EOM(1) 129; CHECK: // .b8 0 // EOM(2) 130; CHECK: // .b8 4 // Abbreviation Code 131; CHECK: // .b8 36 // DW_TAG_base_type 132; CHECK: // .b8 0 // DW_CHILDREN_no 133; CHECK: // .b8 3 // DW_AT_name 134; CHECK: // .b8 8 // DW_FORM_string 135; CHECK: // .b8 62 // DW_AT_encoding 136; CHECK: // .b8 11 // DW_FORM_data1 137; CHECK: // .b8 11 // DW_AT_byte_size 138; CHECK: // .b8 11 // DW_FORM_data1 139; CHECK: // .b8 0 // EOM(1) 140; CHECK: // .b8 0 // EOM(2) 141; CHECK: // .b8 0 // EOM(3) 142; CHECK: // } 143; CHECK: // .section .debug_info 144; CHECK: // { 145; CHECK: // .b32 183 // Length of Unit 146; CHECK: // .b8 2 // DWARF version number 147; CHECK: // .b8 0 148; CHECK: // .b32 .debug_abbrev // Offset Into Abbrev. Section 149; CHECK: // .b8 8 // Address Size (in bytes) 150; CHECK: // .b8 1 // Abbrev [1] 0xb:0xb0 DW_TAG_compile_unit 151; CHECK: // .b8 99 // DW_AT_producer 152; CHECK: // .b8 108 153; CHECK: // .b8 97 154; CHECK: // .b8 110 155; CHECK: // .b8 103 156; CHECK: // .b8 32 157; CHECK: // .b8 118 158; CHECK: // .b8 101 159; CHECK: // .b8 114 160; CHECK: // .b8 115 161; CHECK: // .b8 105 162; CHECK: // .b8 111 163; CHECK: // .b8 110 164; CHECK: // .b8 32 165; CHECK: // .b8 51 166; CHECK: // .b8 46 167; CHECK: // .b8 53 168; CHECK: // .b8 46 169; CHECK: // .b8 48 170; CHECK: // .b8 32 171; CHECK: // .b8 40 172; CHECK: // .b8 116 173; CHECK: // .b8 114 174; CHECK: // .b8 117 175; CHECK: // .b8 110 176; CHECK: // .b8 107 177; CHECK: // .b8 32 178; CHECK: // .b8 50 179; CHECK: // .b8 48 180; CHECK: // .b8 52 181; CHECK: // .b8 49 182; CHECK: // .b8 54 183; CHECK: // .b8 52 184; CHECK: // .b8 41 185; CHECK: // .b8 32 186; CHECK: // .b8 40 187; CHECK: // .b8 108 188; CHECK: // .b8 108 189; CHECK: // .b8 118 190; CHECK: // .b8 109 191; CHECK: // .b8 47 192; CHECK: // .b8 116 193; CHECK: // .b8 114 194; CHECK: // .b8 117 195; CHECK: // .b8 110 196; CHECK: // .b8 107 197; CHECK: // .b8 32 198; CHECK: // .b8 50 199; CHECK: // .b8 48 200; CHECK: // .b8 52 201; CHECK: // .b8 49 202; CHECK: // .b8 56 203; CHECK: // .b8 51 204; CHECK: // .b8 41 205; CHECK: // .b8 0 206; CHECK: // .b8 12 // DW_AT_language 207; CHECK: // .b8 0 208; CHECK: // .b8 98 // DW_AT_name 209; CHECK: // .b8 46 210; CHECK: // .b8 99 211; CHECK: // .b8 0 212; CHECK: // .b32 .debug_line // DW_AT_stmt_list 213; CHECK: // .b8 47 // DW_AT_comp_dir 214; CHECK: // .b8 115 215; CHECK: // .b8 111 216; CHECK: // .b8 117 217; CHECK: // .b8 114 218; CHECK: // .b8 99 219; CHECK: // .b8 101 220; CHECK: // .b8 0 221; CHECK: // .b64 Lfunc_begin0 // DW_AT_low_pc 222; CHECK: // .b64 Lfunc_end2 // DW_AT_high_pc 223; CHECK: // .b8 2 // Abbrev [2] 0x65:0x27 DW_TAG_subprogram 224; CHECK: // .b64 Lfunc_begin0 // DW_AT_low_pc 225; CHECK: // .b64 Lfunc_end0 // DW_AT_high_pc 226; CHECK: // .b8 1 // DW_AT_frame_base 227; CHECK: // .b8 156 228; CHECK: // .b8 98 // DW_AT_name 229; CHECK: // .b8 0 230; CHECK: // .b8 1 // DW_AT_decl_file 231; CHECK: // .b8 1 // DW_AT_decl_line 232; CHECK: // .b8 1 // DW_AT_prototyped 233; CHECK: // .b32 179 // DW_AT_type 234; CHECK: // .b8 1 // DW_AT_external 235; CHECK: // .b8 3 // Abbrev [3] 0x82:0x9 DW_TAG_formal_parameter 236; CHECK: // .b8 99 // DW_AT_name 237; CHECK: // .b8 0 238; CHECK: // .b8 1 // DW_AT_decl_file 239; CHECK: // .b8 1 // DW_AT_decl_line 240; CHECK: // .b32 179 // DW_AT_type 241; CHECK: // .b8 0 // End Of Children Mark 242; CHECK: // .b8 2 // Abbrev [2] 0x8c:0x27 DW_TAG_subprogram 243; CHECK: // .b64 Lfunc_begin2 // DW_AT_low_pc 244; CHECK: // .b64 Lfunc_end2 // DW_AT_high_pc 245; CHECK: // .b8 1 // DW_AT_frame_base 246; CHECK: // .b8 156 247; CHECK: // .b8 100 // DW_AT_name 248; CHECK: // .b8 0 249; CHECK: // .b8 1 // DW_AT_decl_file 250; CHECK: // .b8 3 // DW_AT_decl_line 251; CHECK: // .b8 1 // DW_AT_prototyped 252; CHECK: // .b32 179 // DW_AT_type 253; CHECK: // .b8 1 // DW_AT_external 254; CHECK: // .b8 3 // Abbrev [3] 0xa9:0x9 DW_TAG_formal_parameter 255; CHECK: // .b8 101 // DW_AT_name 256; CHECK: // .b8 0 257; CHECK: // .b8 1 // DW_AT_decl_file 258; CHECK: // .b8 3 // DW_AT_decl_line 259; CHECK: // .b32 179 // DW_AT_type 260; CHECK: // .b8 0 // End Of Children Mark 261; CHECK: // .b8 4 // Abbrev [4] 0xb3:0x7 DW_TAG_base_type 262; CHECK: // .b8 105 // DW_AT_name 263; CHECK: // .b8 110 264; CHECK: // .b8 116 265; CHECK: // .b8 0 266; CHECK: // .b8 5 // DW_AT_encoding 267; CHECK: // .b8 4 // DW_AT_byte_size 268; CHECK: // .b8 0 // End Of Children Mark 269; CHECK: // } 270; CHECK: // .section .debug_macinfo 271; CHECK: // { 272; CHECK: // .b8 0 // End Of Macro List Mark 273; CHECK: // } 274 275attributes #0 = { nounwind uwtable "less-precise-fpmad"="false" "no-frame-pointer-elim"="true" "no-frame-pointer-elim-non-leaf" "no-infs-fp-math"="false" "no-nans-fp-math"="false" "stack-protector-buffer-size"="8" "unsafe-fp-math"="false" "use-soft-float"="false" } 276attributes #1 = { nounwind readnone } 277 278!llvm.ident = !{!0, !0} 279!llvm.dbg.cu = !{!1} 280!llvm.module.flags = !{!11, !12} 281 282!0 = !{!"clang version 3.5.0 (trunk 204164) (llvm/trunk 204183)"} 283!1 = distinct !DICompileUnit(language: DW_LANG_C99, producer: "clang version 3.5.0 (trunk 204164) (llvm/trunk 204183)", isOptimized: false, emissionKind: FullDebug, file: !2, enums: !3, retainedTypes: !3, globals: !3, imports: !3) 284!2 = !DIFile(filename: "b.c", directory: "/source") 285!3 = !{} 286!5 = distinct !DISubprogram(name: "b", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !1, scopeLine: 1, file: !2, scope: !6, type: !7, retainedNodes: !3) 287!6 = !DIFile(filename: "b.c", directory: "/source") 288!7 = !DISubroutineType(types: !8) 289!8 = !{!9, !9} 290!9 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed) 291!10 = distinct !DISubprogram(name: "d", line: 3, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !1, scopeLine: 3, file: !2, scope: !6, type: !7, retainedNodes: !3) 292!11 = !{i32 2, !"Dwarf Version", i32 2} 293!12 = !{i32 1, !"Debug Info Version", i32 3} 294!13 = !DILocalVariable(name: "c", line: 1, arg: 1, scope: !5, file: !6, type: !9) 295!14 = !DILocation(line: 1, scope: !5) 296!15 = !DILocalVariable(name: "e", line: 3, arg: 1, scope: !10, file: !6, type: !9) 297!16 = !DILocation(line: 3, scope: !10) 298