<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body>
<pre class="moz-signature" cols="72">I checked one more time and seems to me I won't be able to rework these tests to use llvm_dwarfdump even after full suport of the debug info. The problem is that ддс is unable to generate an object file for NVPTX target, it requires an external tool called ptxas which is part of the cuda toolchain.
-------------
Best regards,
Alexey Bataev</pre>
<div class="moz-cite-prefix">02.07.2018 13:20, David Blaikie пишет:<br>
</div>
<blockquote type="cite" cite="mid:CAENS6Eu7ZtSnvykEHiLtwVqZT3-YRFXCnFge8-u4OXDL9LbPTw@mail.gmail.com">
<div dir="ltr">Would it make sense to have a default-off/experimental flag to enable this to be actual code generation rather than comments & use that flag for testing?<br>
<br>
& I'm still not sure, even if it can't be done as anything other than comments right now, whether a full golden-file style test for every piece of the output is the best choice here (since a lot of the debug info output is already well tested elsewhere - it
 seems like this extra testing here would make this test brittle - when it could use FileCheck more sparsely to test only particular features that are relevant to this test/to the NVIDIA-specific handling/defaults?)?</div>
<br>
<div class="gmail_quote">
<div dir="ltr">On Mon, Jul 2, 2018 at 9:59 AM Alexey Bataev <<a href="mailto:a.bataev@outlook.com" moz-do-not-send="true">a.bataev@outlook.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
          .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<p>Currently, debug info for NVPTX is disabled. It is emitted, but commented out in the PTX file. I can try to generate the object file, but it will generated without the debug info.</p>
<p>It tests, that debug info for the NVPTX target is correct, there are no any extra lables in the output, that may break the compilation of the resulting PTX file and we do not miss anything in the output (emission of not supported sections, data etc., which,
 again, can break the resulting PTX file). Unless the debug info is uncommented and , thus, enabled, I can't update these tests to use llvm-darfdump.<br>
</p>
</div>
<div text="#000000" bgcolor="#FFFFFF">
<pre class="m_3225689580628055164moz-signature" cols="72">-------------
Best regards,
Alexey Bataev</pre>
</div>
<div text="#000000" bgcolor="#FFFFFF">
<div class="m_3225689580628055164moz-cite-prefix">02.07.2018 12:47, David Blaikie пишет:<br>
</div>
</div>
<div text="#000000" bgcolor="#FFFFFF">
<blockquote type="cite">
<div dir="ltr">What is it that prevents these being able to be dumped with llvm-dwarfdump?<br>
<br>
In any case - what's this test testing for? Even without dwarfdump, could it be more specialized/narrowed down so it isn't so constrained (looks more like a golden file test at this point, which are prone to break due to unrelated changes, etc)?</div>
<br>
<div class="gmail_quote">
<div dir="ltr">On Mon, Jul 2, 2018 at 9:43 AM Alexey Bataev <<a href="mailto:a.bataev@outlook.com" target="_blank" moz-do-not-send="true">a.bataev@outlook.com</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0 0 0
                  .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div text="#000000" bgcolor="#FFFFFF">
<p>Hi David, unfortunately not, at least at this moment. Later, when we'll have full support of debug info for NVPTX target I would be able to rework these tests to use  llvm-dwarfdump tool<br>
</p>
<pre class="m_3225689580628055164m_-8909740327754742575moz-signature" cols="72">-------------
Best regards,
Alexey Bataev</pre>
<div class="m_3225689580628055164m_-8909740327754742575moz-cite-prefix">02.07.2018 12:36, David Blaikie пишет:<br>
</div>
</div>
<div text="#000000" bgcolor="#FFFFFF">
<blockquote type="cite">
<div dir="ltr">Testing all that raw assembly output seems like that might make this test overly sensitive to other changes?<br>
<br>
Could this test use llvm-dwarfdump like other DWARF tests? & only test the particularly relevant parts (what is it that needs to be tested in debug_loc?)</div>
<br>
<div class="gmail_quote">
<div dir="ltr">On Thu, Jun 28, 2018 at 8:19 AM Alexey Bataev via llvm-commits <<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" moz-do-not-send="true">llvm-commits@lists.llvm.org</a>> wrote:<br>
</div>
<blockquote class="gmail_quote" style="margin:0
                          0 0 .8ex;border-left:1px #ccc
                          solid;padding-left:1ex">
Author: abataev<br>
Date: Thu Jun 28 08:14:58 2018<br>
New Revision: 335861<br>
<br>
URL: <a href="http://llvm.org/viewvc/llvm-project?rev=335861&view=rev" rel="noreferrer" target="_blank" moz-do-not-send="true">
http://llvm.org/viewvc/llvm-project?rev=335861&view=rev</a><br>
Log:<br>
[DEBUG_INFO, NVPTX] Add test for .debug_loc section, NFC.<br>
<br>
Added:<br>
    llvm/trunk/test/DebugInfo/NVPTX/debug-loc-offset.ll<br>
<br>
Added: llvm/trunk/test/DebugInfo/NVPTX/debug-loc-offset.ll<br>
URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/NVPTX/debug-loc-offset.ll?rev=335861&view=auto" rel="noreferrer" target="_blank" moz-do-not-send="true">
http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/NVPTX/debug-loc-offset.ll?rev=335861&view=auto</a><br>
==============================================================================<br>
--- llvm/trunk/test/DebugInfo/NVPTX/debug-loc-offset.ll (added)<br>
+++ llvm/trunk/test/DebugInfo/NVPTX/debug-loc-offset.ll Thu Jun 28 08:14:58 2018<br>
@@ -0,0 +1,506 @@<br>
+; RUN: llc -mtriple=nvptx64-nvidia-cuda < %s | FileCheck %s<br>
+<br>
+; CHECK: .target sm_{{[0-9]+}}//, debug<br>
+<br>
+; CHECK: .extern .func  (.param .b32 func_retval0) _ZN1A3fooEv<br>
+; CHECK: (<br>
+; CHECK: .param .b64 _ZN1A3fooEv_param_0<br>
+; CHECK: )<br>
+<br>
+%struct.A = type { i32 (...)**, i32 }<br>
+<br>
+; CHECK: .visible .func  (.param .b32 func_retval0) _Z3bari(<br>
+; CHECK: {<br>
+; CHECK: Lfunc_begin0:<br>
+; CHECK: .loc [[CU1:[0-9]+]] 1 0<br>
+<br>
+; CHECK: //DEBUG_VALUE: bar:b <- {{[0-9]+}}<br>
+; CHECK: //DEBUG_VALUE: bar:b <- {{[0-9]+}}<br>
+; CHECK: .loc [[CU1]] 2 0<br>
+; CHECK: ret;<br>
+; CHECK: }<br>
+<br>
+; Function Attrs: nounwind<br>
+define i32 @_Z3bari(i32 %b) #0 !dbg !4 {<br>
+entry:<br>
+  %b.addr = alloca i32, align 4<br>
+  store i32 %b, i32* %b.addr, align 4<br>
+  call void @llvm.dbg.value(metadata i32 0, metadata !21, metadata !DIExpression()), !dbg !22<br>
+  %0 = load i32, i32* %b.addr, align 4, !dbg !23<br>
+  call void @llvm.dbg.value(metadata i32 1, metadata !21, metadata !DIExpression()), !dbg !22<br>
+  %add = add nsw i32 %0, 4, !dbg !23<br>
+  ret i32 %add, !dbg !23<br>
+}<br>
+<br>
+; Function Attrs: nounwind readnone<br>
+declare void @llvm.dbg.declare(metadata, metadata, metadata) #1<br>
+<br>
+declare void @llvm.dbg.value(metadata, metadata, metadata) #1<br>
+<br>
+; CHECK: .visible .func _Z3baz1A(<br>
+; CHECK: {<br>
+; CHECK: Lfunc_begin1:<br>
+; CHECK: .loc [[CU2:[0-9]+]] 6 0<br>
+; CHECK: //DEBUG_VALUE: baz:z <- {{[0-9]+}}<br>
+; CHECK: //DEBUG_VALUE: baz:z <- {{[0-9]+}}<br>
+; CHECK: .loc [[CU2]] 10 0<br>
+; CHECK: ret;<br>
+; CHECK: }<br>
+<br>
+define void @_Z3baz1A(%struct.A* %a) #2 !dbg !14 {<br>
+entry:<br>
+  %z = alloca i32, align 4<br>
+  call void @llvm.dbg.declare(metadata %struct.A* %a, metadata !24, metadata !DIExpression(DW_OP_deref)), !dbg !25<br>
+  call void @llvm.dbg.declare(metadata i32* %z, metadata !26, metadata !DIExpression()), !dbg !27<br>
+  store i32 2, i32* %z, align 4, !dbg !27<br>
+  %var = getelementptr inbounds %struct.A, %struct.A* %a, i32 0, i32 1, !dbg !28<br>
+  %0 = load i32, i32* %var, align 4, !dbg !28<br>
+  %cmp = icmp sgt i32 %0, 2, !dbg !28<br>
+  br i1 %cmp, label %if.then, label %if.end, !dbg !28<br>
+<br>
+if.then:                                          ; preds = %entry<br>
+  %1 = load i32, i32* %z, align 4, !dbg !30<br>
+  %inc = add nsw i32 %1, 1, !dbg !30<br>
+  store i32 %inc, i32* %z, align 4, !dbg !30<br>
+  br label %if.end, !dbg !30<br>
+<br>
+if.end:                                           ; preds = %if.then, %entry<br>
+  %call = call signext i8 @_ZN1A3fooEv(%struct.A* %a), !dbg !31<br>
+  %conv = sext i8 %call to i32, !dbg !31<br>
+  %cmp1 = icmp eq i32 %conv, 97, !dbg !31<br>
+  br i1 %cmp1, label %if.then2, label %if.end4, !dbg !31<br>
+<br>
+if.then2:                                         ; preds = %if.end<br>
+  %2 = load i32, i32* %z, align 4, !dbg !33<br>
+  %inc3 = add nsw i32 %2, 1, !dbg !33<br>
+  store i32 %inc3, i32* %z, align 4, !dbg !33<br>
+  br label %if.end4, !dbg !33<br>
+<br>
+if.end4:                                          ; preds = %if.then2, %if.end<br>
+  ret void, !dbg !34<br>
+}<br>
+<br>
+; CHECK-DAG: .file [[CU1]] "/llvm_cmake_gcc{{/|\\\\}}debug-loc-offset1.cc"<br>
+; CHECK-DAG: .file [[CU2]] "/llvm_cmake_gcc{{/|\\\\}}debug-loc-offset2.cc"<br>
+<br>
+declare signext i8 @_ZN1A3fooEv(%struct.A*) #2<br>
+<br>
+attributes #0 = { nounwind "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"
 }<br>
+attributes #1 = { nounwind readnone }<br>
+attributes #2 = { "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" }<br>
+<br>
+!<a href="http://llvm.dbg.cu" rel="noreferrer" target="_blank" moz-do-not-send="true">llvm.dbg.cu</a> = !{!0, !9}<br>
+!llvm.module.flags = !{!18, !19}<br>
+!llvm.ident = !{!20, !20}<br>
+<br>
+!0 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 (210479)", isOptimized: false, emissionKind: FullDebug, file: !1, enums: !2, retainedTypes: !2, globals: !2, imports: !2)<br>
+!1 = !DIFile(filename: "debug-loc-offset1.cc", directory: "/llvm_cmake_gcc")<br>
+!2 = !{}<br>
+!4 = distinct !DISubprogram(name: "bar", linkageName: "_Z3bari", line: 1, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 1, file: !1, scope: !5, type: !6, retainedNodes: !2)<br>
+!5 = !DIFile(filename: "debug-loc-offset1.cc", directory: "/llvm_cmake_gcc")<br>
+!6 = !DISubroutineType(types: !7)<br>
+!7 = !{!8, !8}<br>
+!8 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)<br>
+!9 = distinct !DICompileUnit(language: DW_LANG_C_plus_plus, producer: "clang version 3.5.0 (210479)", isOptimized: false, emissionKind: FullDebug, file: !10, enums: !2, retainedTypes: !11, globals: !2, imports: !2)<br>
+!10 = !DIFile(filename: "debug-loc-offset2.cc", directory: "/llvm_cmake_gcc")<br>
+!11 = !{!12}<br>
+!12 = !DICompositeType(tag: DW_TAG_structure_type, name: "A", line: 1, flags: DIFlagFwdDecl, file: !10, identifier: "_ZTS1A")<br>
+!14 = distinct !DISubprogram(name: "baz", linkageName: "_Z3baz1A", line: 6, isLocal: false, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !9, scopeLine: 6, file: !10, scope: !15, type: !16, retainedNodes: !2)<br>
+!15 = !DIFile(filename: "debug-loc-offset2.cc", directory: "/llvm_cmake_gcc")<br>
+!16 = !DISubroutineType(types: !17)<br>
+!17 = !{null, !12}<br>
+!18 = !{i32 2, !"Dwarf Version", i32 4}<br>
+!19 = !{i32 2, !"Debug Info Version", i32 3}<br>
+!20 = !{!"clang version 3.5.0 (210479)"}<br>
+!21 = !DILocalVariable(name: "b", line: 1, arg: 1, scope: !4, file: !5, type: !8)<br>
+!22 = !DILocation(line: 1, scope: !4)<br>
+!23 = !DILocation(line: 2, scope: !4)<br>
+!24 = !DILocalVariable(name: "a", line: 6, arg: 1, scope: !14, file: !15, type: !12)<br>
+!25 = !DILocation(line: 6, scope: !14)<br>
+!26 = !DILocalVariable(name: "z", line: 7, scope: !14, file: !15, type: !8)<br>
+!27 = !DILocation(line: 7, scope: !14)<br>
+!28 = !DILocation(line: 8, scope: !29)<br>
+!29 = distinct !DILexicalBlock(line: 8, column: 0, file: !10, scope: !14)<br>
+!30 = !DILocation(line: 9, scope: !29)<br>
+!31 = !DILocation(line: 10, scope: !32)<br>
+!32 = distinct !DILexicalBlock(line: 10, column: 0, file: !10, scope: !14)<br>
+!33 = !DILocation(line: 11, scope: !32)<br>
+!34 = !DILocation(line: 12, scope: !14)<br>
+<br>
+<br>
+; CHECK: // .section .debug_loc<br>
+; CHECK: // {<br>
+; CHECK: Ldebug_loc0:<br>
+; CHECK: // .b64 Lfunc_begin0-Lfunc_begin0<br>
+; CHECK: // .b64 Ltmp0-Lfunc_begin0<br>
+; CHECK: // .b8 2                                // Loc expr size<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 17                               // DW_OP_consts<br>
+; CHECK: // .b8 0                                // 0<br>
+; CHECK: // .b64 Ltmp0-Lfunc_begin0<br>
+; CHECK: // .b64 Lfunc_end0-Lfunc_begin0<br>
+; CHECK: // .b8 2                                // Loc expr size<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 17                               // DW_OP_consts<br>
+; CHECK: // .b8 1                                // 1<br>
+; CHECK: // .b64 0<br>
+; CHECK: // .b64 0<br>
+; CHECK: Ldebug_loc1:<br>
+; CHECK: // .b64 Ltmp2-Lfunc_begin1<br>
+; CHECK: // .b64 Ltmp2-Lfunc_begin1<br>
+; CHECK: // .b8 2                                // Loc expr size<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 17                               // DW_OP_consts<br>
+; CHECK: // .b8 2                                // 2<br>
+; CHECK: // .b64 Ltmp2-Lfunc_begin1<br>
+; CHECK: // .b64 Lfunc_end1-Lfunc_begin1<br>
+; CHECK: // .b8 2                                // Loc expr size<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 17                               // DW_OP_consts<br>
+; CHECK: // .b8 3                                // 3<br>
+; CHECK: // .b64 0<br>
+; CHECK: // .b64 0<br>
+; CHECK: // }<br>
+; CHECK: // .section .debug_abbrev<br>
+; CHECK: // {<br>
+; CHECK: // .b8 1                                // Abbreviation Code<br>
+; CHECK: // .b8 17                               // DW_TAG_compile_unit<br>
+; CHECK: // .b8 1                                // DW_CHILDREN_yes<br>
+; CHECK: // .b8 37                               // DW_AT_producer<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 19                               // DW_AT_language<br>
+; CHECK: // .b8 5                                // DW_FORM_data2<br>
+; CHECK: // .b8 3                                // DW_AT_name<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 16                               // DW_AT_stmt_list<br>
+; CHECK: // .b8 6                                // DW_FORM_data4<br>
+; CHECK: // .b8 27                               // DW_AT_comp_dir<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 17                               // DW_AT_low_pc<br>
+; CHECK: // .b8 1                                // DW_FORM_addr<br>
+; CHECK: // .b8 18                               // DW_AT_high_pc<br>
+; CHECK: // .b8 1                                // DW_FORM_addr<br>
+; CHECK: // .b8 0                                // EOM(1)<br>
+; CHECK: // .b8 0                                // EOM(2)<br>
+; CHECK: // .b8 2                                // Abbreviation Code<br>
+; CHECK: // .b8 19                               // DW_TAG_structure_type<br>
+; CHECK: // .b8 0                                // DW_CHILDREN_no<br>
+; CHECK: // .b8 3                                // DW_AT_name<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 60                               // DW_AT_declaration<br>
+; CHECK: // .b8 12                               // DW_FORM_flag<br>
+; CHECK: // .b8 0                                // EOM(1)<br>
+; CHECK: // .b8 0                                // EOM(2)<br>
+; CHECK: // .b8 3                                // Abbreviation Code<br>
+; CHECK: // .b8 46                               // DW_TAG_subprogram<br>
+; CHECK: // .b8 1                                // DW_CHILDREN_yes<br>
+; CHECK: // .b8 17                               // DW_AT_low_pc<br>
+; CHECK: // .b8 1                                // DW_FORM_addr<br>
+; CHECK: // .b8 18                               // DW_AT_high_pc<br>
+; CHECK: // .b8 1                                // DW_FORM_addr<br>
+; CHECK: // .b8 135                              // DW_AT_MIPS_linkage_name<br>
+; CHECK: // .b8 64<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 3                                // DW_AT_name<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 58                               // DW_AT_decl_file<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 59                               // DW_AT_decl_line<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 63                               // DW_AT_external<br>
+; CHECK: // .b8 12                               // DW_FORM_flag<br>
+; CHECK: // .b8 0                                // EOM(1)<br>
+; CHECK: // .b8 0                                // EOM(2)<br>
+; CHECK: // .b8 4                                // Abbreviation Code<br>
+; CHECK: // .b8 52                               // DW_TAG_variable<br>
+; CHECK: // .b8 0                                // DW_CHILDREN_no<br>
+; CHECK: // .b8 2                                // DW_AT_location<br>
+; CHECK: // .b8 6                                // DW_FORM_data4<br>
+; CHECK: // .b8 3                                // DW_AT_name<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 58                               // DW_AT_decl_file<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 59                               // DW_AT_decl_line<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 73                               // DW_AT_type<br>
+; CHECK: // .b8 16                               // DW_FORM_ref_addr<br>
+; CHECK: // .b8 0                                // EOM(1)<br>
+; CHECK: // .b8 0                                // EOM(2)<br>
+; CHECK: // .b8 5                                // Abbreviation Code<br>
+; CHECK: // .b8 46                               // DW_TAG_subprogram<br>
+; CHECK: // .b8 1                                // DW_CHILDREN_yes<br>
+; CHECK: // .b8 17                               // DW_AT_low_pc<br>
+; CHECK: // .b8 1                                // DW_FORM_addr<br>
+; CHECK: // .b8 18                               // DW_AT_high_pc<br>
+; CHECK: // .b8 1                                // DW_FORM_addr<br>
+; CHECK: // .b8 135                              // DW_AT_MIPS_linkage_name<br>
+; CHECK: // .b8 64<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 3                                // DW_AT_name<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 58                               // DW_AT_decl_file<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 59                               // DW_AT_decl_line<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 73                               // DW_AT_type<br>
+; CHECK: // .b8 19                               // DW_FORM_ref4<br>
+; CHECK: // .b8 63                               // DW_AT_external<br>
+; CHECK: // .b8 12                               // DW_FORM_flag<br>
+; CHECK: // .b8 0                                // EOM(1)<br>
+; CHECK: // .b8 0                                // EOM(2)<br>
+; CHECK: // .b8 6                                // Abbreviation Code<br>
+; CHECK: // .b8 5                                // DW_TAG_formal_parameter<br>
+; CHECK: // .b8 0                                // DW_CHILDREN_no<br>
+; CHECK: // .b8 2                                // DW_AT_location<br>
+; CHECK: // .b8 6                                // DW_FORM_data4<br>
+; CHECK: // .b8 3                                // DW_AT_name<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 58                               // DW_AT_decl_file<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 59                               // DW_AT_decl_line<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 73                               // DW_AT_type<br>
+; CHECK: // .b8 19                               // DW_FORM_ref4<br>
+; CHECK: // .b8 0                                // EOM(1)<br>
+; CHECK: // .b8 0                                // EOM(2)<br>
+; CHECK: // .b8 7                                // Abbreviation Code<br>
+; CHECK: // .b8 36                               // DW_TAG_base_type<br>
+; CHECK: // .b8 0                                // DW_CHILDREN_no<br>
+; CHECK: // .b8 3                                // DW_AT_name<br>
+; CHECK: // .b8 8                                // DW_FORM_string<br>
+; CHECK: // .b8 62                               // DW_AT_encoding<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 11                               // DW_AT_byte_size<br>
+; CHECK: // .b8 11                               // DW_FORM_data1<br>
+; CHECK: // .b8 0                                // EOM(1)<br>
+; CHECK: // .b8 0                                // EOM(2)<br>
+; CHECK: // .b8 0                                // EOM(3)<br>
+; CHECK: // }<br>
+; CHECK: // .section .debug_info<br>
+; CHECK: // {<br>
+; CHECK: // .b32 152                             // Length of Unit<br>
+; CHECK: // .b8 2                                // DWARF version number<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b32 .debug_abbrev                   // Offset Into Abbrev. Section<br>
+; CHECK: // .b8 8                                // Address Size (in bytes)<br>
+; CHECK: // .b8 1                                // Abbrev [1] 0xb:0x91 DW_TAG_compile_unit<br>
+; CHECK: // .b8 99                               // DW_AT_producer<br>
+; CHECK: // .b8 108<br>
+; CHECK: // .b8 97<br>
+; CHECK: // .b8 110<br>
+; CHECK: // .b8 103<br>
+; CHECK: // .b8 32<br>
+; CHECK: // .b8 118<br>
+; CHECK: // .b8 101<br>
+; CHECK: // .b8 114<br>
+; CHECK: // .b8 115<br>
+; CHECK: // .b8 105<br>
+; CHECK: // .b8 111<br>
+; CHECK: // .b8 110<br>
+; CHECK: // .b8 32<br>
+; CHECK: // .b8 51<br>
+; CHECK: // .b8 46<br>
+; CHECK: // .b8 53<br>
+; CHECK: // .b8 46<br>
+; CHECK: // .b8 48<br>
+; CHECK: // .b8 32<br>
+; CHECK: // .b8 40<br>
+; CHECK: // .b8 50<br>
+; CHECK: // .b8 49<br>
+; CHECK: // .b8 48<br>
+; CHECK: // .b8 52<br>
+; CHECK: // .b8 55<br>
+; CHECK: // .b8 57<br>
+; CHECK: // .b8 41<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 4                                // DW_AT_language<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 100                              // DW_AT_name<br>
+; CHECK: // .b8 101<br>
+; CHECK: // .b8 98<br>
+; CHECK: // .b8 117<br>
+; CHECK: // .b8 103<br>
+; CHECK: // .b8 45<br>
+; CHECK: // .b8 108<br>
+; CHECK: // .b8 111<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 45<br>
+; CHECK: // .b8 111<br>
+; CHECK: // .b8 102<br>
+; CHECK: // .b8 102<br>
+; CHECK: // .b8 115<br>
+; CHECK: // .b8 101<br>
+; CHECK: // .b8 116<br>
+; CHECK: // .b8 50<br>
+; CHECK: // .b8 46<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b32 .debug_line                     // DW_AT_stmt_list<br>
+; CHECK: // .b8 47                               // DW_AT_comp_dir<br>
+; CHECK: // .b8 108<br>
+; CHECK: // .b8 108<br>
+; CHECK: // .b8 118<br>
+; CHECK: // .b8 109<br>
+; CHECK: // .b8 95<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 109<br>
+; CHECK: // .b8 97<br>
+; CHECK: // .b8 107<br>
+; CHECK: // .b8 101<br>
+; CHECK: // .b8 95<br>
+; CHECK: // .b8 103<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b64 Lfunc_begin1                    // DW_AT_low_pc<br>
+; CHECK: // .b64 Lfunc_end1                      // DW_AT_high_pc<br>
+; CHECK: // .b8 2                                // Abbrev [2] 0x64:0x4 DW_TAG_structure_type<br>
+; CHECK: // .b8 65                               // DW_AT_name<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 1                                // DW_AT_declaration<br>
+; CHECK: // .b8 3                                // Abbrev [3] 0x68:0x33 DW_TAG_subprogram<br>
+; CHECK: // .b64 Lfunc_begin1                    // DW_AT_low_pc<br>
+; CHECK: // .b64 Lfunc_end1                      // DW_AT_high_pc<br>
+; CHECK: // .b8 95                               // DW_AT_MIPS_linkage_name<br>
+; CHECK: // .b8 90<br>
+; CHECK: // .b8 51<br>
+; CHECK: // .b8 98<br>
+; CHECK: // .b8 97<br>
+; CHECK: // .b8 122<br>
+; CHECK: // .b8 49<br>
+; CHECK: // .b8 65<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 98                               // DW_AT_name<br>
+; CHECK: // .b8 97<br>
+; CHECK: // .b8 122<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 2                                // DW_AT_decl_file<br>
+; CHECK: // .b8 6                                // DW_AT_decl_line<br>
+; CHECK: // .b8 1                                // DW_AT_external<br>
+; CHECK: // .b8 4                                // Abbrev [4] 0x89:0x11 DW_TAG_variable<br>
+; CHECK: // .b32 Ldebug_loc1                     // DW_AT_location<br>
+; CHECK: // .b8 122                              // DW_AT_name<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 2                                // DW_AT_decl_file<br>
+; CHECK: // .b8 7                                // DW_AT_decl_line<br>
+; CHECK: // .b64 .debug_info+306                 // DW_AT_type<br>
+; CHECK: // .b8 0                                // End Of Children Mark<br>
+; CHECK: // .b8 0                                // End Of Children Mark<br>
+; CHECK: // .b32 154                             // Length of Unit<br>
+; CHECK: // .b8 2                                // DWARF version number<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b32 .debug_abbrev                   // Offset Into Abbrev. Section<br>
+; CHECK: // .b8 8                                // Address Size (in bytes)<br>
+; CHECK: // .b8 1                                // Abbrev [1] 0xb:0x93 DW_TAG_compile_unit<br>
+; CHECK: // .b8 99                               // DW_AT_producer<br>
+; CHECK: // .b8 108<br>
+; CHECK: // .b8 97<br>
+; CHECK: // .b8 110<br>
+; CHECK: // .b8 103<br>
+; CHECK: // .b8 32<br>
+; CHECK: // .b8 118<br>
+; CHECK: // .b8 101<br>
+; CHECK: // .b8 114<br>
+; CHECK: // .b8 115<br>
+; CHECK: // .b8 105<br>
+; CHECK: // .b8 111<br>
+; CHECK: // .b8 110<br>
+; CHECK: // .b8 32<br>
+; CHECK: // .b8 51<br>
+; CHECK: // .b8 46<br>
+; CHECK: // .b8 53<br>
+; CHECK: // .b8 46<br>
+; CHECK: // .b8 48<br>
+; CHECK: // .b8 32<br>
+; CHECK: // .b8 40<br>
+; CHECK: // .b8 50<br>
+; CHECK: // .b8 49<br>
+; CHECK: // .b8 48<br>
+; CHECK: // .b8 52<br>
+; CHECK: // .b8 55<br>
+; CHECK: // .b8 57<br>
+; CHECK: // .b8 41<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 4                                // DW_AT_language<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 100                              // DW_AT_name<br>
+; CHECK: // .b8 101<br>
+; CHECK: // .b8 98<br>
+; CHECK: // .b8 117<br>
+; CHECK: // .b8 103<br>
+; CHECK: // .b8 45<br>
+; CHECK: // .b8 108<br>
+; CHECK: // .b8 111<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 45<br>
+; CHECK: // .b8 111<br>
+; CHECK: // .b8 102<br>
+; CHECK: // .b8 102<br>
+; CHECK: // .b8 115<br>
+; CHECK: // .b8 101<br>
+; CHECK: // .b8 116<br>
+; CHECK: // .b8 49<br>
+; CHECK: // .b8 46<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b32 .debug_line                     // DW_AT_stmt_list<br>
+; CHECK: // .b8 47                               // DW_AT_comp_dir<br>
+; CHECK: // .b8 108<br>
+; CHECK: // .b8 108<br>
+; CHECK: // .b8 118<br>
+; CHECK: // .b8 109<br>
+; CHECK: // .b8 95<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 109<br>
+; CHECK: // .b8 97<br>
+; CHECK: // .b8 107<br>
+; CHECK: // .b8 101<br>
+; CHECK: // .b8 95<br>
+; CHECK: // .b8 103<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 99<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b64 Lfunc_begin0                    // DW_AT_low_pc<br>
+; CHECK: // .b64 Lfunc_end0                      // DW_AT_high_pc<br>
+; CHECK: // .b8 5                                // Abbrev [5] 0x64:0x32 DW_TAG_subprogram<br>
+; CHECK: // .b64 Lfunc_begin0                    // DW_AT_low_pc<br>
+; CHECK: // .b64 Lfunc_end0                      // DW_AT_high_pc<br>
+; CHECK: // .b8 95                               // DW_AT_MIPS_linkage_name<br>
+; CHECK: // .b8 90<br>
+; CHECK: // .b8 51<br>
+; CHECK: // .b8 98<br>
+; CHECK: // .b8 97<br>
+; CHECK: // .b8 114<br>
+; CHECK: // .b8 105<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 98                               // DW_AT_name<br>
+; CHECK: // .b8 97<br>
+; CHECK: // .b8 114<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 1                                // DW_AT_decl_file<br>
+; CHECK: // .b8 1                                // DW_AT_decl_line<br>
+; CHECK: // .b32 150                             // DW_AT_type<br>
+; CHECK: // .b8 1                                // DW_AT_external<br>
+; CHECK: // .b8 6                                // Abbrev [6] 0x88:0xd DW_TAG_formal_parameter<br>
+; CHECK: // .b32 Ldebug_loc0                     // DW_AT_location<br>
+; CHECK: // .b8 98                               // DW_AT_name<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 1                                // DW_AT_decl_file<br>
+; CHECK: // .b8 1                                // DW_AT_decl_line<br>
+; CHECK: // .b32 150                             // DW_AT_type<br>
+; CHECK: // .b8 0                                // End Of Children Mark<br>
+; CHECK: // .b8 7                                // Abbrev [7] 0x96:0x7 DW_TAG_base_type<br>
+; CHECK: // .b8 105                              // DW_AT_name<br>
+; CHECK: // .b8 110<br>
+; CHECK: // .b8 116<br>
+; CHECK: // .b8 0<br>
+; CHECK: // .b8 5                                // DW_AT_encoding<br>
+; CHECK: // .b8 4                                // DW_AT_byte_size<br>
+; CHECK: // .b8 0                                // End Of Children Mark<br>
+; CHECK: // }<br>
+; CHECK: // .section .debug_macinfo<br>
+; CHECK: // {<br>
+; CHECK: // .b8 0                                // End Of Macro List Mark<br>
+; CHECK: // }<br>
<br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@lists.llvm.org" target="_blank" moz-do-not-send="true">llvm-commits@lists.llvm.org</a><br>
<a href="http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits" rel="noreferrer" target="_blank" moz-do-not-send="true">http://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits</a><br>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</div>
</blockquote>
</div>
</blockquote>
<br>
</body>
</html>