aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorEric Christopher <echristo@gmail.com>2012-11-13 23:30:57 +0000
committerEric Christopher <echristo@gmail.com>2012-11-13 23:30:57 +0000
commit0c949efad533330eee234d613712510db7376e44 (patch)
tree852c90ffb6cc0358ce8a15d6612e40be5c19b174
parent25f071eedf5d20faf9e1614d5ff5dc39b6de5041 (diff)
Revert "Use the 'count' attribute instead of the 'upper_bound' attribute."
temporarily since it breaks the gdb bots. This reverts commit r167807/30305bec25cac981c6d4a3b8be004401310a82a7. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@167887 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/CGDebugInfo.cpp21
-rw-r--r--test/CodeGen/debug-info-zero-length-arrays.c33
-rw-r--r--test/CodeGenCXX/debug-info-flex-member.cpp2
3 files changed, 10 insertions, 46 deletions
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp
index 3843889635..80fa09be74 100644
--- a/lib/CodeGen/CGDebugInfo.cpp
+++ b/lib/CodeGen/CGDebugInfo.cpp
@@ -1473,23 +1473,23 @@ llvm::DIType CGDebugInfo::CreateType(const ObjCInterfaceType *Ty,
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 @@ llvm::DIType CGDebugInfo::CreateType(const ArrayType *Ty,
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 @@ llvm::DIType CGDebugInfo::CreateType(const ArrayType *Ty,
// FIXME: Verify this is right for VLAs.
Subscripts.push_back(DBuilder.getOrCreateSubrange(LowerBound,
- UpperBound,
- Count));
+ UpperBound));
EltTy = Ty->getElementType();
}
diff --git a/test/CodeGen/debug-info-zero-length-arrays.c b/test/CodeGen/debug-info-zero-length-arrays.c
deleted file mode 100644
index 68f7c016ff..0000000000
--- a/test/CodeGen/debug-info-zero-length-arrays.c
+++ /dev/null
@@ -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 ]
diff --git a/test/CodeGenCXX/debug-info-flex-member.cpp b/test/CodeGenCXX/debug-info-flex-member.cpp
index 72a5bf8461..b6aa6dac6b 100644
--- a/test/CodeGenCXX/debug-info-flex-member.cpp
+++ b/test/CodeGenCXX/debug-info-flex-member.cpp
@@ -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[];