diff options
Diffstat (limited to 'clang/lib/CodeGen/CGDebugInfo.cpp')
| -rw-r--r-- | clang/lib/CodeGen/CGDebugInfo.cpp | 35 | 
1 files changed, 9 insertions, 26 deletions
| diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index a4182afd1e4..f3468f29c1b 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/lib/CodeGen/CGDebugInfo.cpp @@ -1473,25 +1473,19 @@ 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 NumElems = Ty->getNumElements(); -  int64_t LowerBound = 0; -  int64_t Count = NumElems; -  if (NumElems == 0) +  int64_t Count = Ty->getNumElements(); +  if (Count == 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 -    --NumElems; +    // Use Count == -1 to express such arrays. +    Count = -1; -  llvm::Value *Subscript = DBuilder.getOrCreateSubrange(LowerBound, NumElems, -                                                        Count); +  llvm::Value *Subscript = DBuilder.getOrCreateSubrange(0, Count);    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, @@ -1532,23 +1526,12 @@ llvm::DIType CGDebugInfo::CreateType(const ArrayType *Ty,      //   struct foo {      //     int x[0];      //   }; -    int64_t UpperBound = 0; -    int64_t LowerBound = 0; -    int64_t Count = -1; -    if (const ConstantArrayType *CAT = dyn_cast<ConstantArrayType>(Ty)) { +    int64_t Count = -1;         // Count == -1 is an unbounded array. +    if (const ConstantArrayType *CAT = dyn_cast<ConstantArrayType>(Ty))        Count = CAT->getSize().getZExtValue(); -      if (Count) -        UpperBound = Count - 1; -    } else { -      // This is an unbounded array. Use Low = 1, Hi = 0 to express such  -      // arrays. -      LowerBound = 1; -    }      // FIXME: Verify this is right for VLAs. -    Subscripts.push_back(DBuilder.getOrCreateSubrange(LowerBound, -                                                      UpperBound, -                                                      Count)); +    Subscripts.push_back(DBuilder.getOrCreateSubrange(0, Count));      EltTy = Ty->getElementType();    } | 

