minor cleanups for VLA stuff.

llvm-svn: 79059
This commit is contained in:
Chris Lattner 2009-08-15 00:03:43 +00:00
parent 19efdd67dd
commit 8dc7626f9c
1 changed files with 12 additions and 13 deletions

View File

@ -493,19 +493,16 @@ llvm::Value *CodeGenFunction::EmitVLASize(QualType Ty) {
llvm::Value *&SizeEntry = VLASizeMap[VAT];
if (!SizeEntry) {
// Get the element size;
llvm::Value *ElemSize;
QualType ElemTy = VAT->getElementType();
const llvm::Type *SizeTy = ConvertType(getContext().getSizeType());
// Get the element size;
QualType ElemTy = VAT->getElementType();
llvm::Value *ElemSize;
if (ElemTy->isVariableArrayType())
ElemSize = EmitVLASize(ElemTy);
else {
else
ElemSize = llvm::ConstantInt::get(SizeTy,
getContext().getTypeSize(ElemTy) / 8);
}
llvm::Value *NumElements = EmitScalarExpr(VAT->getSizeExpr());
NumElements = Builder.CreateIntCast(NumElements, SizeTy, false, "tmp");
@ -514,14 +511,16 @@ llvm::Value *CodeGenFunction::EmitVLASize(QualType Ty) {
}
return SizeEntry;
} else if (const ArrayType *AT = dyn_cast<ArrayType>(Ty)) {
EmitVLASize(AT->getElementType());
} else if (const PointerType *PT = Ty->getAs<PointerType>())
EmitVLASize(PT->getPointeeType());
else {
assert(0 && "unknown VM type!");
}
if (const ArrayType *AT = dyn_cast<ArrayType>(Ty)) {
EmitVLASize(AT->getElementType());
return 0;
}
const PointerType *PT = Ty->getAs<PointerType>();
assert(PT && "unknown VM type!");
EmitVLASize(PT->getPointeeType());
return 0;
}