[llvm] r202332 - Add a debug info code generation level to the compile unit metadata

David Blaikie dblaikie at gmail.com
Thu Feb 27 10:45:59 PST 2014


On Thu, Feb 27, 2014 at 10:15 AM, Manman Ren <manman.ren at gmail.com> wrote:
>
>
>
> On Wed, Feb 26, 2014 at 10:54 PM, David Blaikie <dblaikie at gmail.com> wrote:
>>
>> On Wed, Feb 26, 2014 at 5:24 PM, Eric Christopher <echristo at gmail.com>
>> wrote:
>> > Author: echristo
>> > Date: Wed Feb 26 19:24:56 2014
>> > New Revision: 202332
>> >
>> > URL: http://llvm.org/viewvc/llvm-project?rev=202332&view=rev
>> > Log:
>> > Add a debug info code generation level to the compile unit metadata
>> > and update everything accordingly. This can be used to conditionalize
>> > the amount of output in the backend based on the amount of debug
>> > requested/metadata emission scheme by a front end (e.g. clang).
>>
>> Just to reiterate a conversation Eric & I had offline - we're not sure
>> why changing the DICompileUnit schema didn't cause more (read: all)
>> debug info tests to fail.
>>
>> Manman - if I understood correctly, your verifier changes last year
>> caused the debug info verifier to run implicitly when llc is run over
>> an IR file right? so generally our IR debug info tests should all be
>> being verified on every execution? Is this just a hole in the verifier
>> that we aren't verifying the compile units?
>
>
> Eric & David,
>
> 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.

Is the performance of llc a problem for anyone? Could we turn it on by
default there?

>
> CCing Duncan since he is working on making it a module verifier.
>
> Manman
>
>>
>>
>> >
>> > Paired with a commit to clang.
>> >
>> > Modified:
>> >     llvm/trunk/include/llvm/DIBuilder.h
>> >     llvm/trunk/include/llvm/DebugInfo.h
>> >     llvm/trunk/lib/IR/DIBuilder.cpp
>> >     llvm/trunk/lib/IR/DebugInfo.cpp
>> >     llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll
>> >     llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll
>> >     llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll
>> >
>> > Modified: llvm/trunk/include/llvm/DIBuilder.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DIBuilder.h?rev=202332&r1=202331&r2=202332&view=diff
>> >
>> > ==============================================================================
>> > --- llvm/trunk/include/llvm/DIBuilder.h (original)
>> > +++ llvm/trunk/include/llvm/DIBuilder.h Wed Feb 26 19:24:56 2014
>> > @@ -87,6 +87,7 @@ namespace llvm {
>> >      public:
>> >      explicit DIBuilder(Module &M);
>> >      enum ComplexAddrKind { OpPlus=1, OpDeref };
>> > +    enum DebugEmissionKind { FullDebug=1, LineTablesOnly };
>> >
>> >      /// finalize - Construct any deferred debug info descriptors.
>> >      void finalize();
>> > @@ -111,7 +112,8 @@ namespace llvm {
>> >                                      StringRef Dir, StringRef Producer,
>> >                                      bool isOptimized, StringRef Flags,
>> >                                      unsigned RV,
>> > -                                    StringRef SplitName = StringRef());
>> > +                                    StringRef SplitName = StringRef(),
>> > +                                    DebugEmissionKind Kind =
>> > FullDebug);
>> >
>> >      /// createFile - Create a file descriptor to hold debugging
>> > information
>> >      /// for a file.
>> >
>> > Modified: llvm/trunk/include/llvm/DebugInfo.h
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo.h?rev=202332&r1=202331&r2=202332&view=diff
>> >
>> > ==============================================================================
>> > --- llvm/trunk/include/llvm/DebugInfo.h (original)
>> > +++ llvm/trunk/include/llvm/DebugInfo.h Wed Feb 26 19:24:56 2014
>> > @@ -427,6 +427,7 @@ public:
>> >    DIArray getImportedEntities() const;
>> >
>> >    StringRef getSplitDebugFilename() const { return getStringField(12);
>> > }
>> > +  unsigned getEmissionKind() const { return getUnsignedField(13); }
>> >
>> >    /// Verify - Verify that a compile unit is well formed.
>> >    bool Verify() const;
>> >
>> > Modified: llvm/trunk/lib/IR/DIBuilder.cpp
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DIBuilder.cpp?rev=202332&r1=202331&r2=202332&view=diff
>> >
>> > ==============================================================================
>> > --- llvm/trunk/lib/IR/DIBuilder.cpp (original)
>> > +++ llvm/trunk/lib/IR/DIBuilder.cpp Wed Feb 26 19:24:56 2014
>> > @@ -97,7 +97,9 @@ DICompileUnit DIBuilder::createCompileUn
>> >                                             StringRef Directory,
>> >                                             StringRef Producer, bool
>> > isOptimized,
>> >                                             StringRef Flags, unsigned
>> > RunTimeVer,
>> > -                                           StringRef SplitName) {
>> > +                                           StringRef SplitName,
>> > +                                           DebugEmissionKind Kind) {
>> > +
>> >    assert(((Lang <= dwarf::DW_LANG_Python && Lang >= dwarf::DW_LANG_C89)
>> > ||
>> >            (Lang <= dwarf::DW_LANG_hi_user && Lang >=
>> > dwarf::DW_LANG_lo_user)) &&
>> >           "Invalid Language tag");
>> > @@ -127,7 +129,8 @@ DICompileUnit DIBuilder::createCompileUn
>> >      TempSubprograms,
>> >      TempGVs,
>> >      TempImportedModules,
>> > -    MDString::get(VMContext, SplitName)
>> > +    MDString::get(VMContext, SplitName),
>> > +    ConstantInt::get(Type::getInt32Ty(VMContext), Kind)
>> >    };
>> >
>> >    MDNode *CUNode = MDNode::get(VMContext, Elts);
>> >
>> > Modified: llvm/trunk/lib/IR/DebugInfo.cpp
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/IR/DebugInfo.cpp?rev=202332&r1=202331&r2=202332&view=diff
>> >
>> > ==============================================================================
>> > --- llvm/trunk/lib/IR/DebugInfo.cpp (original)
>> > +++ llvm/trunk/lib/IR/DebugInfo.cpp Wed Feb 26 19:24:56 2014
>> > @@ -382,7 +382,7 @@ bool DICompileUnit::Verify() const {
>> >    if (getFilename().empty())
>> >      return false;
>> >
>> > -  return DbgNode->getNumOperands() == 13;
>> > +  return DbgNode->getNumOperands() == 14;
>> >  }
>> >
>> >  /// Verify - Verify that an ObjC property is well formed.
>> >
>> > Modified: llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll?rev=202332&r1=202331&r2=202332&view=diff
>> >
>> > ==============================================================================
>> > --- llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll (original)
>> > +++ llvm/trunk/test/DebugInfo/2010-03-19-DbgDeclare.ll Wed Feb 26
>> > 19:24:56 2014
>> > @@ -9,7 +9,7 @@ entry:
>> >  }
>> >  !llvm.dbg.cu = !{!2}
>> >  !llvm.module.flags = !{!5}
>> > -!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]
>> > +!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]
>> >  !3 = metadata !{}
>> >  !0 = metadata !{i32 662302, i32 26, metadata !1, null}
>> >  !1 = metadata !{i32 4, metadata !"foo"}
>> >
>> > Modified: llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll?rev=202332&r1=202331&r2=202332&view=diff
>> >
>> > ==============================================================================
>> > --- llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll
>> > (original)
>> > +++ llvm/trunk/test/Transforms/StripSymbols/2010-08-25-crash.ll Wed Feb
>> > 26 19:24:56 2014
>> > @@ -9,7 +9,7 @@ entry:
>> >
>> >  !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 ]
>> >  !1 = metadata !{i32 524329, metadata !10} ; [ DW_TAG_file_type ]
>> > -!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 ]
>> > +!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 ]
>> >  !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
>> > ]
>> >  !4 = metadata !{metadata !5}
>> >  !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 ]
>> >
>> > Modified:
>> > llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll
>> > URL:
>> > http://llvm.org/viewvc/llvm-project/llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll?rev=202332&r1=202331&r2=202332&view=diff
>> >
>> > ==============================================================================
>> > --- llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll
>> > (original)
>> > +++ llvm/trunk/test/Transforms/StripSymbols/strip-dead-debug-info.ll Wed
>> > Feb 26 19:24:56 2014
>> > @@ -30,7 +30,7 @@ attributes #2 = { nounwind readonly ssp
>> >  !llvm.dbg.cu = !{!0}
>> >  !llvm.module.flags = !{!25}
>> >
>> > -!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]
>> > +!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]
>> >  !1 = metadata !{metadata !"g.c", metadata !"/tmp/"}
>> >  !2 = metadata !{null}
>> >  !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]
>> >
>> >
>> > _______________________________________________
>> > llvm-commits mailing list
>> > llvm-commits at cs.uiuc.edu
>> > http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>>
>> _______________________________________________
>> llvm-commits mailing list
>> llvm-commits at cs.uiuc.edu
>> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
>



More information about the llvm-commits mailing list