<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Feb 27, 2014 at 10:45 AM, 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:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="HOEnZb"><div class="h5">On Thu, Feb 27, 2014 at 10:15 AM, Manman Ren <<a href="mailto:manman.ren@gmail.com">manman.ren@gmail.com</a>> wrote:<br>

><br>
><br>
><br>
> On Wed, Feb 26, 2014 at 10:54 PM, David Blaikie <<a href="mailto:dblaikie@gmail.com">dblaikie@gmail.com</a>> wrote:<br>
>><br>
>> On Wed, Feb 26, 2014 at 5:24 PM, Eric Christopher <<a href="mailto:echristo@gmail.com">echristo@gmail.com</a>><br>
>> 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>
>> 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>
><br>
><br>
> Eric & David,<br>
><br>
> The debug info verifier is currently part of the IR verifier, but it is<br>
> disabled by default because of its speed (we had email discussions on why it<br>
> is slow and how to improve it). We need to turn it on with command line<br>
> argument for all our debug info testing cases.<br>
<br>
</div></div>Is the performance of llc a problem for anyone? Could we turn it on by<br>
default there?<br></blockquote><div><br></div><div>David,</div><div><br></div><div>Are you suggesting to turn the debug info verifier on by default for llc, but not opt or lto? I don't quite get what you mean :]</div>
<div><br></div><div>Manman</div><div> <br></div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5"><br>
><br>
> CCing Duncan since he is working on making it a module verifier.<br>
><br>
> Manman<br>
><br>
>><br>
>><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:<br>
>> > <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>
>> > ==============================================================================<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 =<br>
>> > FullDebug);<br>
>> ><br>
>> >      /// createFile - Create a file descriptor to hold debugging<br>
>> > information<br>
>> >      /// for a file.<br>
>> ><br>
>> > Modified: llvm/trunk/include/llvm/DebugInfo.h<br>
>> > URL:<br>
>> > <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>
>> > ==============================================================================<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>
>> > }<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:<br>
>> > <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>
>> > ==============================================================================<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<br>
>> > isOptimized,<br>
>> >                                             StringRef Flags, unsigned<br>
>> > RunTimeVer,<br>
>> > -                                           StringRef SplitName) {<br>
>> > +                                           StringRef SplitName,<br>
>> > +                                           DebugEmissionKind Kind) {<br>
>> > +<br>
>> >    assert(((Lang <= dwarf::DW_LANG_Python && Lang >= dwarf::DW_LANG_C89)<br>
>> > ||<br>
>> >            (Lang <= dwarf::DW_LANG_hi_user && Lang >=<br>
>> > 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:<br>
>> > <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>
>> > ==============================================================================<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:<br>
>> > <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>
>> > ==============================================================================<br>
>> > --- llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll (original)<br>
>> > +++ llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll Wed Feb 26<br>
>> > 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<br>
>> > version 3.3 ", i1 false, metadata !"", i32 0, metadata !3, metadata !3,<br>
>> > metadata !3, metadata !3,  metadata !3, metadata !""} ; [<br>
>> > DW_TAG_compile_unit ]<br>
>> > [/usr/local/google/home/blaikie/dev/scratch/scratch.cpp] [lang 0x8001]<br>
>> > +!2 = metadata !{i32 786449, metadata !4, i32 32769, metadata !"clang<br>
>> > version 3.3 ", i1 false, metadata !"", i32 0, metadata !3, metadata !3,<br>
>> > metadata !3, metadata !3,  metadata !3, metadata !"", i32 1} ; [<br>
>> > DW_TAG_compile_unit ]<br>
>> > [/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:<br>
>> > <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>
>> > ==============================================================================<br>
>> > --- llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll<br>
>> > (original)<br>
>> > +++ llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll Wed Feb<br>
>> > 26 19:24:56 2014<br>
>> > @@ -9,7 +9,7 @@ entry:<br>
>> ><br>
>> >  !0 = metadata !{i32 524334, metadata !10, metadata !1, metadata !"foo",<br>
>> > metadata !"foo", metadata !"foo", i32 3, metadata !3, i1 false, i1 true, i32<br>
>> > 0, i32 0, null, i1 false, i1 false, i32 ()* @foo, null, null, null, i32 0} ;<br>
>> > [ 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<br>
>> > version 2.8 (trunk 112062)", i1 true, metadata !"", i32 0, metadata !11,<br>
>> > metadata !11, metadata !12, metadata !13, null, metadata !""} ; [<br>
>> > DW_TAG_compile_unit ]<br>
>> > +!2 = metadata !{i32 524305, metadata !10, i32 12, metadata !"clang<br>
>> > version 2.8 (trunk 112062)", i1 true, metadata !"", i32 0, metadata !11,<br>
>> > metadata !11, metadata !12, metadata !13, null, metadata !"", i32 1} ; [<br>
>> > DW_TAG_compile_unit ]<br>
>> >  !3 = metadata !{i32 524309, metadata !10, metadata !1, metadata !"",<br>
>> > i32 0, i64 0, i64 0, i64 0, i32 0, null, metadata !4, i32 0, null, null,<br>
>> > null} ; [ DW_TAG_subroutine_type ] [line 0, size 0, align 0, offset 0] [from<br>
>> > ]<br>
>> >  !4 = metadata !{metadata !5}<br>
>> >  !5 = metadata !{i32 524324, metadata !10, metadata !1, metadata !"int",<br>
>> > i32 0, i64 32, i64 32, i64 0, i32 0, i32 5} ; [ DW_TAG_base_type ]<br>
>> ><br>
>> > Modified:<br>
>> > llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll<br>
>> > URL:<br>
>> > <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>
>> > ==============================================================================<br>
>> > --- llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll<br>
>> > (original)<br>
>> > +++ llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll Wed<br>
>> > 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<br>
>> > on Apple Inc. build 5658) (LLVM build)", i1 true, metadata !"", i32 0,<br>
>> > metadata !2, metadata !2, metadata !23, metadata !24, null, metadata !""} ;<br>
>> > [ DW_TAG_compile_unit ] [/tmp//g.c] [DW_LANG_C89]<br>
>> > +!0 = metadata !{i32 524305, metadata !1, i32 1, metadata !"4.2.1 (Based<br>
>> > on Apple Inc. build 5658) (LLVM build)", i1 true, metadata !"", i32 0,<br>
>> > metadata !2, metadata !2, metadata !23, metadata !24, null, metadata !"",<br>
>> > 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",<br>
>> > metadata !"bar", metadata !"", i32 5, metadata !4, i1 true, i1 true, i32 0,<br>
>> > i32 0, null, i1 false, i1 true, null, null, null, null, i32 0} ; [<br>
>> > 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>
><br>
><br>
</div></div></blockquote></div><br></div></div>