fix PR6332, allowing an index of zero into a zero sized array

even if the element of the array has no size.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@101662 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner 2010-04-17 19:02:33 +00:00
parent eef6d78be1
commit 34e9d17d1b
2 changed files with 10 additions and 2 deletions

View File

@ -630,8 +630,8 @@ uint64_t TargetData::getIndexedOffset(const Type *ptrTy, Value* const* Indices,
Ty = cast<SequentialType>(Ty)->getElementType();
// Get the array index and the size of each array element.
int64_t arrayIdx = cast<ConstantInt>(Indices[CurIDX])->getSExtValue();
Result += arrayIdx * (int64_t)getTypeAllocSize(Ty);
if (int64_t arrayIdx = cast<ConstantInt>(Indices[CurIDX])->getSExtValue())
Result += arrayIdx * (int64_t)getTypeAllocSize(Ty);
}
}

View File

@ -0,0 +1,8 @@
; RUN: llc %s -o -
; PR6332
%struct.AVCodecTag = type opaque
@ff_codec_bmp_tags = external global [0 x %struct.AVCodecTag]
@tags = global [1 x %struct.AVCodecTag*] [%struct.AVCodecTag* getelementptr
inbounds ([0 x %struct.AVCodecTag]* @ff_codec_bmp_tags, i32 0, i32 0)]