[cfe-commits] r167887 - in /cfe/trunk: lib/CodeGen/CGDebugInfo.cpp test/CodeGen/debug-info-zero-length-arrays.c test/CodeGenCXX/debug-info-flex-member.cpp

Eric Christopher echristo at gmail.com
Tue Nov 13 15:30:57 PST 2012


Author: echristo
Date: Tue Nov 13 17:30:57 2012
New Revision: 167887

URL: http://llvm.org/viewvc/llvm-project?rev=167887&view=rev
Log:
Revert "Use the 'count' attribute instead of the 'upper_bound' attribute."
temporarily since it breaks the gdb bots.

This reverts commit r167807/30305bec25cac981c6d4a3b8be004401310a82a7.

Removed:
    cfe/trunk/test/CodeGen/debug-info-zero-length-arrays.c
Modified:
    cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
    cfe/trunk/test/CodeGenCXX/debug-info-flex-member.cpp

Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=167887&r1=167886&r2=167887&view=diff
==============================================================================
--- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original)
+++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Tue Nov 13 17:30:57 2012
@@ -1473,23 +1473,23 @@
 
 llvm::DIType CGDebugInfo::CreateType(const VectorType *Ty, llvm::DIFile Unit) {
   llvm::DIType ElementTy = getOrCreateType(Ty->getElementType(), Unit);
-  int64_t UpperBound = Ty->getNumElements();
+  int64_t NumElems = Ty->getNumElements();
   int64_t LowerBound = 0;
-  if (UpperBound == 0)
+  if (NumElems == 0)
     // If number of elements are not known then this is an unbounded array.
     // Use Low = 1, Hi = 0 to express such arrays.
     LowerBound = 1;
   else
-    --UpperBound;
+    --NumElems;
 
-  llvm::Value *Subscript = DBuilder.getOrCreateSubrange(LowerBound, UpperBound,
-                                                        Ty->getNumElements());
+  llvm::Value *Subscript = DBuilder.getOrCreateSubrange(LowerBound, NumElems);
   llvm::DIArray SubscriptArray = DBuilder.getOrCreateArray(Subscript);
 
   uint64_t Size = CGM.getContext().getTypeSize(Ty);
   uint64_t Align = CGM.getContext().getTypeAlign(Ty);
 
-  return DBuilder.createVectorType(Size, Align, ElementTy, SubscriptArray);
+  return
+    DBuilder.createVectorType(Size, Align, ElementTy, SubscriptArray);
 }
 
 llvm::DIType CGDebugInfo::CreateType(const ArrayType *Ty,
@@ -1525,11 +1525,9 @@
   while ((Ty = dyn_cast<ArrayType>(EltTy))) {
     int64_t UpperBound = 0;
     int64_t LowerBound = 0;
-    uint64_t Count = 0;
     if (const ConstantArrayType *CAT = dyn_cast<ConstantArrayType>(Ty)) {
-      Count = CAT->getSize().getZExtValue();
-      if (Count)
-        UpperBound = Count - 1;
+      if (CAT->getSize().getZExtValue())
+        UpperBound = CAT->getSize().getZExtValue() - 1;
     } else
       // This is an unbounded array. Use Low = 1, Hi = 0 to express such 
       // arrays.
@@ -1537,8 +1535,7 @@
     
     // FIXME: Verify this is right for VLAs.
     Subscripts.push_back(DBuilder.getOrCreateSubrange(LowerBound,
-                                                      UpperBound,
-                                                      Count));
+                                                      UpperBound));
     EltTy = Ty->getElementType();
   }
 

Removed: cfe/trunk/test/CodeGen/debug-info-zero-length-arrays.c
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGen/debug-info-zero-length-arrays.c?rev=167886&view=auto
==============================================================================
--- cfe/trunk/test/CodeGen/debug-info-zero-length-arrays.c (original)
+++ cfe/trunk/test/CodeGen/debug-info-zero-length-arrays.c (removed)
@@ -1,33 +0,0 @@
-// RUN: %clang -emit-llvm -S -g %s -o - | FileCheck %s
-
-// <rdar://problem/12566646>
-
-// The subrange for a type 'int[1]' and 'int[0]' should be different. Use the
-// 'count' attribute instead of the 'upper_bound' attribute do disabmiguate the
-// DIE.
-
-struct foo {
-  int a;
-  int b[1];
-};
-
-struct bar {
-  int a;
-  int b[0];
-};
-
-int main()
-{
-  struct foo my_foo;
-  struct bar my_bar;
-
-  my_foo.a = 3;
-  my_bar.a = 5;
-
-  return my_foo.a + my_bar.a;
-}
-
-// The third metadata operand is the count.
-//
-// CHECK: metadata !{i32 786465, i64 0, i64 0, i64 1} ; [ DW_TAG_subrange_type ]
-// CHECK: metadata !{i32 786465, i64 0, i64 0, i64 0} ; [ DW_TAG_subrange_type ]

Modified: cfe/trunk/test/CodeGenCXX/debug-info-flex-member.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/test/CodeGenCXX/debug-info-flex-member.cpp?rev=167887&r1=167886&r2=167887&view=diff
==============================================================================
--- cfe/trunk/test/CodeGenCXX/debug-info-flex-member.cpp (original)
+++ cfe/trunk/test/CodeGenCXX/debug-info-flex-member.cpp Tue Nov 13 17:30:57 2012
@@ -1,6 +1,6 @@
 // RUN: %clang_cc1 -emit-llvm -g -triple x86_64-apple-darwin %s -o - | FileCheck %s
 
-// CHECK: metadata !{i32 {{.*}}, i64 1, i64 0, i64 0} ; [ DW_TAG_subrange_type ]
+// CHECK: metadata !{i32 {{.*}}, i64 1, i64 0}        ; [ DW_TAG_subrange_type ]
 
 struct StructName {
   int member[];





More information about the cfe-commits mailing list