<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Feb 26, 2014 at 10:54 PM, David Blaikie <span dir="ltr"><<a href="mailto:dblaikie@gmail.com" target="_blank">dblaikie@gmail.com</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="im">On Wed, Feb 26, 2014 at 5:24 PM, Eric Christopher <<a href="mailto:echristo@gmail.com">echristo@gmail.com</a>> wrote:<br>

> Author: echristo<br>
> Date: Wed Feb 26 19:24:56 2014<br>
> New Revision: 202332<br>
><br>
> URL: <a href="http://llvm.org/viewvc/llvm-project?rev=202332&view=rev" target="_blank">http://llvm.org/viewvc/llvm-project?rev=202332&view=rev</a><br>
> Log:<br>
> Add a debug info code generation level to the compile unit metadata<br>
> and update everything accordingly. This can be used to conditionalize<br>
> the amount of output in the backend based on the amount of debug<br>
> requested/metadata emission scheme by a front end (e.g. clang).<br>
<br>
</div>Just to reiterate a conversation Eric & I had offline - we're not sure<br>
why changing the DICompileUnit schema didn't cause more (read: all)<br>
debug info tests to fail.<br>
<br>
Manman - if I understood correctly, your verifier changes last year<br>
caused the debug info verifier to run implicitly when llc is run over<br>
an IR file right? so generally our IR debug info tests should all be<br>
being verified on every execution? Is this just a hole in the verifier<br>
that we aren't verifying the compile units?<br></blockquote><div><br></div><div>Eric & David,</div><div><br></div><div>The debug info verifier is currently part of the IR verifier, but it is disabled by default because of its speed (we had email discussions on why it is slow and how to improve it). We need to turn it on with command line argument for all our debug info testing cases.</div>
<div><br></div><div>CCing Duncan since he is working on making it a module verifier.</div><div><br></div><div>Manman</div><div> <br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">

<div class=""><div class="h5"><br>
><br>
> Paired with a commit to clang.<br>
><br>
> Modified:<br>
>     llvm/trunk/include/llvm/DIBuilder.h<br>
>     llvm/trunk/include/llvm/DebugInfo.h<br>
>     llvm/trunk/lib/IR/DIBuilder.cpp<br>
>     llvm/trunk/lib/IR/DebugInfo.cpp<br>
>     llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll<br>
>     llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll<br>
>     llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll<br>
><br>
> Modified: llvm/trunk/include/llvm/DIBuilder.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DIBuilder.h?rev=202332&r1=202331&r2=202332&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DIBuilder.h?rev=202332&r1=202331&r2=202332&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/include/llvm/DIBuilder.h (original)<br>
> +++ llvm/trunk/include/llvm/DIBuilder.h Wed Feb 26 19:24:56 2014<br>
> @@ -87,6 +87,7 @@ namespace llvm {<br>
>      public:<br>
>      explicit DIBuilder(Module &M);<br>
>      enum ComplexAddrKind { OpPlus=1, OpDeref };<br>
> +    enum DebugEmissionKind { FullDebug=1, LineTablesOnly };<br>
><br>
>      /// finalize - Construct any deferred debug info descriptors.<br>
>      void finalize();<br>
> @@ -111,7 +112,8 @@ namespace llvm {<br>
>                                      StringRef Dir, StringRef Producer,<br>
>                                      bool isOptimized, StringRef Flags,<br>
>                                      unsigned RV,<br>
> -                                    StringRef SplitName = StringRef());<br>
> +                                    StringRef SplitName = StringRef(),<br>
> +                                    DebugEmissionKind Kind = FullDebug);<br>
><br>
>      /// createFile - Create a file descriptor to hold debugging information<br>
>      /// for a file.<br>
><br>
> Modified: llvm/trunk/include/llvm/DebugInfo.h<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo.h?rev=202332&r1=202331&r2=202332&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo.h?rev=202332&r1=202331&r2=202332&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/include/llvm/DebugInfo.h (original)<br>
> +++ llvm/trunk/include/llvm/DebugInfo.h Wed Feb 26 19:24:56 2014<br>
> @@ -427,6 +427,7 @@ public:<br>
>    DIArray getImportedEntities() const;<br>
><br>
>    StringRef getSplitDebugFilename() const { return getStringField(12); }<br>
> +  unsigned getEmissionKind() const { return getUnsignedField(13); }<br>
><br>
>    /// Verify - Verify that a compile unit is well formed.<br>
>    bool Verify() const;<br>
><br>
> Modified: llvm/trunk/lib/IR/DIBuilder.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=202332&r1=202331&r2=202332&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=202332&r1=202331&r2=202332&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/lib/IR/DIBuilder.cpp (original)<br>
> +++ llvm/trunk/lib/IR/DIBuilder.cpp Wed Feb 26 19:24:56 2014<br>
> @@ -97,7 +97,9 @@ DICompileUnit DIBuilder::createCompileUn<br>
>                                             StringRef Directory,<br>
>                                             StringRef Producer, bool isOptimized,<br>
>                                             StringRef Flags, unsigned RunTimeVer,<br>
> -                                           StringRef SplitName) {<br>
> +                                           StringRef SplitName,<br>
> +                                           DebugEmissionKind Kind) {<br>
> +<br>
>    assert(((Lang <= dwarf::DW_LANG_Python && Lang >= dwarf::DW_LANG_C89) ||<br>
>            (Lang <= dwarf::DW_LANG_hi_user && Lang >= dwarf::DW_LANG_lo_user)) &&<br>
>           "Invalid Language tag");<br>
> @@ -127,7 +129,8 @@ DICompileUnit DIBuilder::createCompileUn<br>
>      TempSubprograms,<br>
>      TempGVs,<br>
>      TempImportedModules,<br>
> -    MDString::get(VMContext, SplitName)<br>
> +    MDString::get(VMContext, SplitName),<br>
> +    ConstantInt::get(Type::getInt32Ty(VMContext), Kind)<br>
>    };<br>
><br>
>    MDNode *CUNode = MDNode::get(VMContext, Elts);<br>
><br>
> Modified: llvm/trunk/lib/IR/DebugInfo.cpp<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=202332&r1=202331&r2=202332&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=202332&r1=202331&r2=202332&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/lib/IR/DebugInfo.cpp (original)<br>
> +++ llvm/trunk/lib/IR/DebugInfo.cpp Wed Feb 26 19:24:56 2014<br>
> @@ -382,7 +382,7 @@ bool DICompileUnit::Verify() const {<br>
>    if (getFilename().empty())<br>
>      return false;<br>
><br>
> -  return DbgNode->getNumOperands() == 13;<br>
> +  return DbgNode->getNumOperands() == 14;<br>
>  }<br>
><br>
>  /// Verify - Verify that an ObjC property is well formed.<br>
><br>
> Modified: llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll?rev=202332&r1=202331&r2=202332&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll?rev=202332&r1=202331&r2=202332&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll (original)<br>
> +++ llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll Wed Feb 26 19:24:56 2014<br>
> @@ -9,7 +9,7 @@ entry:<br>
>  }<br>
>  !<a href="http://llvm.dbg.cu" target="_blank">llvm.dbg.cu</a> = !{!2}<br>
>  !llvm.module.flags = !{!5}<br>
> -!2 = metadata !{i32 786449, metadata !4, i32 32769, metadata !"clang version 3.3 ", i1 false, metadata !"", i32 0, metadata !3, metadata !3, metadata !3, metadata !3,  metadata !3, metadata !""} ; [ DW_TAG_compile_unit ] [/usr/local/google/home/blaikie/dev/scratch/scratch.cpp] [lang 0x8001]<br>

> +!2 = metadata !{i32 786449, metadata !4, i32 32769, metadata !"clang version 3.3 ", i1 false, metadata !"", i32 0, metadata !3, metadata !3, metadata !3, metadata !3,  metadata !3, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/usr/local/google/home/blaikie/dev/scratch/scratch.cpp] [lang 0x8001]<br>

>  !3 = metadata !{}<br>
>  !0 = metadata !{i32 662302, i32 26, metadata !1, null}<br>
>  !1 = metadata !{i32 4, metadata !"foo"}<br>
><br>
> Modified: llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll?rev=202332&r1=202331&r2=202332&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll?rev=202332&r1=202331&r2=202332&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll (original)<br>
> +++ llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll Wed Feb 26 19:24:56 2014<br>
> @@ -9,7 +9,7 @@ entry:<br>
><br>
>  !0 = metadata !{i32 524334, metadata !10, metadata !1, metadata !"foo", metadata !"foo", metadata !"foo", i32 3, metadata !3, i1 false, i1 true, i32 0, i32 0, null, i1 false, i1 false, i32 ()* @foo, null, null, null, i32 0} ; [ DW_TAG_subprogram ]<br>

>  !1 = metadata !{i32 524329, metadata !10} ; [ DW_TAG_file_type ]<br>
> -!2 = metadata !{i32 524305, metadata !10, i32 12, metadata !"clang version 2.8 (trunk 112062)", i1 true, metadata !"", i32 0, metadata !11, metadata !11, metadata !12, metadata !13, null, metadata !""} ; [ DW_TAG_compile_unit ]<br>

> +!2 = metadata !{i32 524305, metadata !10, i32 12, metadata !"clang version 2.8 (trunk 112062)", i1 true, metadata !"", i32 0, metadata !11, metadata !11, metadata !12, metadata !13, null, metadata !"", i32 1} ; [ DW_TAG_compile_unit ]<br>

>  !3 = metadata !{i32 524309, metadata !10, metadata !1, metadata !"", i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !4, i32 0, null, null, null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from ]<br>

>  !4 = metadata !{metadata !5}<br>
>  !5 = metadata !{i32 524324, metadata !10, metadata !1, metadata !"int", i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]<br>
><br>
> Modified: llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll<br>
> URL: <a href="http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll?rev=202332&r1=202331&r2=202332&view=diff" target="_blank">http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll?rev=202332&r1=202331&r2=202332&view=diff</a><br>

> ==============================================================================<br>
> --- llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll (original)<br>
> +++ llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll Wed Feb 26 19:24:56 2014<br>
> @@ -30,7 +30,7 @@ attributes #2 = { nounwind readonly ssp<br>
>  !<a href="http://llvm.dbg.cu" target="_blank">llvm.dbg.cu</a> = !{!0}<br>
>  !llvm.module.flags = !{!25}<br>
><br>
> -!0 = metadata !{i32 524305, metadata !1, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 true, metadata !"", i32 0, metadata !2, metadata !2, metadata !23, metadata !24, null, metadata !""} ; [ DW_TAG_compile_unit ] [/tmp//g.c] [DW_LANG_C89]<br>

> +!0 = metadata !{i32 524305, metadata !1, i32 1, metadata !"4.2.1 (Based on Apple Inc. build 5658) (LLVM build)", i1 true, metadata !"", i32 0, metadata !2, metadata !2, metadata !23, metadata !24, null, metadata !"", i32 1} ; [ DW_TAG_compile_unit ] [/tmp//g.c] [DW_LANG_C89]<br>

>  !1 = metadata !{metadata !"g.c", metadata !"/tmp/"}<br>
>  !2 = metadata !{null}<br>
>  !3 = metadata !{i32 524334, metadata !1, null, metadata !"bar", metadata !"bar", metadata !"", i32 5, metadata !4, i1 true, i1 true, i32 0, i32 0, null, i1 false, i1 true, null, null, null, null, i32 0} ; [ DW_TAG_subprogram ] [line 5] [local] [def] [scope 0] [bar]<br>

><br>
><br>
> _______________________________________________<br>
> llvm-commits mailing list<br>
> <a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
> <a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
<br>
_______________________________________________<br>
llvm-commits mailing list<br>
<a href="mailto:llvm-commits@cs.uiuc.edu">llvm-commits@cs.uiuc.edu</a><br>
<a href="http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits" target="_blank">http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits</a><br>
</div></div></blockquote></div><br></div></div>