[llvm-commits] [llvm] r167806 - in /llvm/trunk: include/llvm/DIBuilder.h include/llvm/DebugInfo.h lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp lib/VMCore/DIBuilder.cpp test/CodeGen/X86/dbg-subrange.ll

Eric Christopher echristo at gmail.com
Thu Nov 15 08:18:47 PST 2012


At this point I'm pretty much given up bumping the metadata version number
unless I'm really changing the format. It's not meant to be portable and
there are so many changes required that it's pretty silly as we're
implementing (say) c++11 support or anything else that we should worry
about the version number. When it gets to a point where we're happy with
the metadata format and have decent debug info coming out (i.e. most
changes aren't changing the format of the metadata) we can worry about
bumping the version number or setting one at all.

-eric


On Thu, Nov 15, 2012 at 8:09 AM, Robinson, Paul
<Paul.Robinson at am.sony.com>wrote:

> I know it's been reverted already, but doesn't adding a field to a metdata
> record
> mean we should bump the metadata version number?  (If not, what would the
> criteria be?)
> --paulr
> ________________________________________
> From: llvm-commits-bounces at cs.uiuc.edu [llvm-commits-bounces at cs.uiuc.edu]
> on behalf of Bill Wendling [isanbard at gmail.com]
> Sent: Monday, November 12, 2012 6:31 PM
> To: llvm-commits at cs.uiuc.edu
> Subject: [llvm-commits] [llvm] r167806 - in /llvm/trunk:
> include/llvm/DIBuilder.h include/llvm/DebugInfo.h
> lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp lib/VMCore/DIBuilder.cpp
> test/CodeGen/X86/dbg-subrange.ll
>
> Author: void
> Date: Mon Nov 12 20:31:47 2012
> New Revision: 167806
>
> URL: http://llvm.org/viewvc/llvm-project?rev=167806&view=rev
> Log:
> Use the 'count' attribute instead of the 'upper_bound' attribute.
>
> If we have a type 'int a[1]' and a type 'int b[0]', the generated DWARF is
> the
> same for both of them because we use the 'upper_bound' attribute. Instead
> use
> the 'count' attrbute, which gives the correct number of elements in the
> array.
> <rdar://problem/12566646>
>
> Modified:
>     llvm/trunk/include/llvm/DIBuilder.h
>     llvm/trunk/include/llvm/DebugInfo.h
>     llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
>     llvm/trunk/lib/VMCore/DIBuilder.cpp
>     llvm/trunk/test/CodeGen/X86/dbg-subrange.ll
>
> Modified: llvm/trunk/include/llvm/DIBuilder.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DIBuilder.h?rev=167806&r1=167805&r2=167806&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/DIBuilder.h (original)
> +++ llvm/trunk/include/llvm/DIBuilder.h Mon Nov 12 20:31:47 2012
> @@ -371,7 +371,7 @@
>
>      /// getOrCreateSubrange - Create a descriptor for a value range.  This
>      /// implicitly uniques the values returned.
> -    DISubrange getOrCreateSubrange(int64_t Lo, int64_t Hi);
> +    DISubrange getOrCreateSubrange(int64_t Lo, int64_t Hi, uint64_t
> Count);
>
>      /// createGlobalVariable - Create a new descriptor for the specified
> global.
>      /// @param Name        Name of the variable.
>
> Modified: llvm/trunk/include/llvm/DebugInfo.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/DebugInfo.h?rev=167806&r1=167805&r2=167806&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/DebugInfo.h (original)
> +++ llvm/trunk/include/llvm/DebugInfo.h Mon Nov 12 20:31:47 2012
> @@ -143,6 +143,7 @@
>
>      uint64_t getLo() const { return getUInt64Field(1); }
>      uint64_t getHi() const { return getUInt64Field(2); }
> +    uint64_t getCount() const { return getUInt64Field(3); }
>    };
>
>    /// DIArray - This descriptor holds an array of descriptors.
>
> Modified: llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp?rev=167806&r1=167805&r2=167806&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp (original)
> +++ llvm/trunk/lib/CodeGen/AsmPrinter/DwarfCompileUnit.cpp Mon Nov 12
> 20:31:47 2012
> @@ -1252,6 +1252,7 @@
>    addDIEEntry(DW_Subrange, dwarf::DW_AT_type, dwarf::DW_FORM_ref4,
> IndexTy);
>    uint64_t L = SR.getLo();
>    uint64_t H = SR.getHi();
> +  uint64_t C = SR.getCount();
>
>    // The L value defines the lower bounds which is typically zero for
> C/C++. The
>    // H value is the upper bounds.  Values are 64 bit.  H - L + 1 is the
> size
> @@ -1265,7 +1266,7 @@
>    }
>    if (L)
>      addUInt(DW_Subrange, dwarf::DW_AT_lower_bound, 0, L);
> -  addUInt(DW_Subrange, dwarf::DW_AT_upper_bound, 0, H);
> +  addUInt(DW_Subrange, dwarf::DW_AT_count, 0, C);
>    Buffer.addChild(DW_Subrange);
>  }
>
>
> Modified: llvm/trunk/lib/VMCore/DIBuilder.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/VMCore/DIBuilder.cpp?rev=167806&r1=167805&r2=167806&view=diff
>
> ==============================================================================
> --- llvm/trunk/lib/VMCore/DIBuilder.cpp (original)
> +++ llvm/trunk/lib/VMCore/DIBuilder.cpp Mon Nov 12 20:31:47 2012
> @@ -741,11 +741,13 @@
>
>  /// getOrCreateSubrange - Create a descriptor for a value range.  This
>  /// implicitly uniques the values returned.
> -DISubrange DIBuilder::getOrCreateSubrange(int64_t Lo, int64_t Hi) {
> +DISubrange DIBuilder::getOrCreateSubrange(int64_t Lo, int64_t Hi,
> +                                          uint64_t Count) {
>    Value *Elts[] = {
>      GetTagConstant(VMContext, dwarf::DW_TAG_subrange_type),
>      ConstantInt::get(Type::getInt64Ty(VMContext), Lo),
> -    ConstantInt::get(Type::getInt64Ty(VMContext), Hi)
> +    ConstantInt::get(Type::getInt64Ty(VMContext), Hi),
> +    ConstantInt::get(Type::getInt64Ty(VMContext), Count)
>    };
>
>    return DISubrange(MDNode::get(VMContext, Elts));
>
> Modified: llvm/trunk/test/CodeGen/X86/dbg-subrange.ll
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/test/CodeGen/X86/dbg-subrange.ll?rev=167806&r1=167805&r2=167806&view=diff
>
> ==============================================================================
> --- llvm/trunk/test/CodeGen/X86/dbg-subrange.ll (original)
> +++ llvm/trunk/test/CodeGen/X86/dbg-subrange.ll Mon Nov 12 20:31:47 2012
> @@ -4,7 +4,7 @@
>  target triple = "x86_64-apple-macosx10.7.2"
>
>  @s = common global [4294967296 x i8] zeroinitializer, align 16
> -;CHECK: .long  4294967295
> +;CHECK: .quad 4294967296   ## DW_AT_count
>
>  define void @bar() nounwind uwtable ssp {
>  entry:
> @@ -31,7 +31,7 @@
>  !14 = metadata !{i32 720897, null, metadata !"", null, i32 0, i64
> 34359738368, i64 8, i32 0, i32 0, metadata !15, metadata !16, i32 0, i32 0}
> ; [ DW_TAG_array_type ]
>  !15 = metadata !{i32 720932, null, metadata !"char", null, i32 0, i64 8,
> i64 8, i64 0, i32 0, i32 6} ; [ DW_TAG_base_type ]
>  !16 = metadata !{metadata !17}
> -!17 = metadata !{i32 720929, i64 0, i64 4294967295} ; [
> DW_TAG_subrange_type ]
> +!17 = metadata !{i32 720929, i64 0, i64 4294967295, i64 4294967296} ; [
> DW_TAG_subrange_type ]
>  !18 = metadata !{i32 5, i32 3, metadata !19, null}
>  !19 = metadata !{i32 720907, metadata !5, i32 4, i32 1, metadata !6, i32
> 0} ; [ DW_TAG_lexical_block ]
>  !20 = metadata !{i32 6, i32 1, metadata !19, null}
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20121115/5ef822e6/attachment.html>


More information about the llvm-commits mailing list