diff options
-rw-r--r-- | lib/Target/TargetData.cpp | 9 |
1 files changed, 3 insertions, 6 deletions
diff --git a/lib/Target/TargetData.cpp b/lib/Target/TargetData.cpp index 1c6f9d1..ede96f7 100644 --- a/lib/Target/TargetData.cpp +++ b/lib/Target/TargetData.cpp @@ -195,10 +195,10 @@ uint64_t TargetData::getIndexedOffset(const Type *ptrTy, // Get the array index and the size of each array element. // Both must be known constants, or the index shd be 0; else this fails. int64_t arrayIdx = cast<ConstantSInt>(Idx[CurIDX])->getValue(); - Result += arrayIdx == 0? 0 - : (uint64_t) (arrayIdx * (int64_t) getTypeSize(Ty)); + Result += arrayIdx * (int64_t)getTypeSize(Ty); - } else if (const StructType *STy = dyn_cast<const StructType>(Ty)) { + } else { + const StructType *STy = cast<StructType>(Ty); assert(Idx[CurIDX]->getType() == Type::UByteTy && "Illegal struct idx"); unsigned FieldNo = cast<ConstantUInt>(Idx[CurIDX])->getValue(); @@ -211,9 +211,6 @@ uint64_t TargetData::getIndexedOffset(const Type *ptrTy, // Update Ty to refer to current element Ty = STy->getElementTypes()[FieldNo]; - } else { - assert(0 && "Indexing type that is not struct or array?"); - return 0; // Load directly through ptr } } |