diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp index 01e9d8ea8c8a17076142603f726d65f190f45c25..e6e5ea197037751f5634d0074d10ef7f431acbdf 100644 --- a/lib/CodeGen/CGCall.cpp +++ b/lib/CodeGen/CGCall.cpp @@ -879,18 +879,19 @@ void CodeGenFunction::EmitFunctionProlog(const CGFunctionInfo &FI, // FIXME: We should have a common utility for generating an aggregate // copy. const llvm::Type *I8PtrTy = Builder.getInt8PtrTy(); - unsigned Size = getContext().getTypeSize(Ty) / 8; + CharUnits Size = getContext().getTypeSizeInChars(Ty); Builder.CreateMemCpy(Builder.CreateBitCast(AlignedTemp, I8PtrTy), Builder.CreateBitCast(V, I8PtrTy), - llvm::ConstantInt::get(IntPtrTy, Size), + llvm::ConstantInt::get(IntPtrTy, + Size.getQuantity()), ArgI.getIndirectAlign(), false); V = AlignedTemp; } } else { // Load scalar value from indirect argument. - unsigned Alignment = getContext().getTypeAlignInChars(Ty).getQuantity(); - V = EmitLoadOfScalar(V, false, Alignment, Ty); + CharUnits Alignment = getContext().getTypeAlignInChars(Ty); + V = EmitLoadOfScalar(V, false, Alignment.getQuantity(), Ty); if (!getContext().typesAreCompatible(Ty, Arg->getType())) { // This must be a promotion, for something like // "void a(x) short x; {..." diff --git a/lib/CodeGen/CGExpr.cpp b/lib/CodeGen/CGExpr.cpp index e6af820d77a42cfdca4c4fb114fa05296dc9fdb0..bdc4ef723ab3fb53f447f6360ef2cd29a4e263fb 100644 --- a/lib/CodeGen/CGExpr.cpp +++ b/lib/CodeGen/CGExpr.cpp @@ -475,7 +475,8 @@ LValue CodeGenFunction::EmitUnsupportedLValue(const Expr *E, LValue CodeGenFunction::EmitCheckedLValue(const Expr *E) { LValue LV = EmitLValue(E); if (!isa<DeclRefExpr>(E) && !LV.isBitField() && LV.isSimple()) - EmitCheck(LV.getAddress(), getContext().getTypeSize(E->getType()) / 8); + EmitCheck(LV.getAddress(), + getContext().getTypeSizeInChars(E->getType()).getQuantity()); return LV; } diff --git a/lib/CodeGen/CGExprCXX.cpp b/lib/CodeGen/CGExprCXX.cpp index 246ecb2d2cda78feb7c3edf8228c522e1da4a5f0..01d671a2d9b3291e42dd2f853d5de5ba68ec15f9 100644 --- a/lib/CodeGen/CGExprCXX.cpp +++ b/lib/CodeGen/CGExprCXX.cpp @@ -640,8 +640,9 @@ static void EmitZeroMemSet(CodeGenFunction &CGF, QualType T, if (NewPtr->getType() != BP) NewPtr = CGF.Builder.CreateBitCast(NewPtr, BP, "tmp"); + CharUnits Alignment = CGF.getContext().getTypeAlignInChars(T); CGF.Builder.CreateMemSet(NewPtr, CGF.Builder.getInt8(0), Size, - CGF.getContext().getTypeAlign(T)/8, false); + Alignment.getQuantity(), false); } static void EmitNewInitializer(CodeGenFunction &CGF, const CXXNewExpr *E, diff --git a/lib/CodeGen/CGExprScalar.cpp b/lib/CodeGen/CGExprScalar.cpp index fde9f03ba7f31dd5f9df88322f3d391cee4f1098..0a192457a4f33c2204f0e9f64f441873dc0e9283 100644 --- a/lib/CodeGen/CGExprScalar.cpp +++ b/lib/CodeGen/CGExprScalar.cpp @@ -1245,10 +1245,10 @@ EmitScalarPrePostIncDec(const UnaryOperator *E, LValue LV, if (const ObjCObjectType *OIT = PTEE->getAs<ObjCObjectType>()) { // Handle interface types, which are not represented with a concrete // type. - int size = CGF.getContext().getTypeSize(OIT) / 8; + CharUnits size = CGF.getContext().getTypeSizeInChars(OIT); if (!isInc) size = -size; - Inc = llvm::ConstantInt::get(Inc->getType(), size); + Inc = llvm::ConstantInt::get(Inc->getType(), size.getQuantity()); const llvm::Type *i8Ty = llvm::Type::getInt8PtrTy(VMContext); InVal = Builder.CreateBitCast(InVal, i8Ty); NextVal = Builder.CreateGEP(InVal, Inc, "add.ptr"); diff --git a/lib/CodeGen/CGObjC.cpp b/lib/CodeGen/CGObjC.cpp index 0837c578a79122f3458d21da412bbefa192dac19..1c64e3cb4c3d805e31fab101ce539d7ad153bf29 100644 --- a/lib/CodeGen/CGObjC.cpp +++ b/lib/CodeGen/CGObjC.cpp @@ -241,9 +241,10 @@ void CodeGenFunction::GenerateObjCGetter(ObjCImplementationDecl *IMP, Types.ConvertType(getContext().VoidPtrTy))); Args.push_back(std::make_pair(RV, getContext().VoidPtrTy)); // sizeof (Type of Ivar) - uint64_t Size = getContext().getTypeSize(Ivar->getType()) / 8; + CharUnits Size = getContext().getTypeSizeInChars(Ivar->getType()); llvm::Value *SizeVal = - llvm::ConstantInt::get(Types.ConvertType(getContext().LongTy), Size); + llvm::ConstantInt::get(Types.ConvertType(getContext().LongTy), + Size.getQuantity()); Args.push_back(std::make_pair(RValue::get(SizeVal), getContext().LongTy)); llvm::Value *isAtomic = @@ -374,9 +375,10 @@ void CodeGenFunction::GenerateObjCSetter(ObjCImplementationDecl *IMP, RV = RValue::get(ArgAsPtrTy); Args.push_back(std::make_pair(RV, getContext().VoidPtrTy)); // sizeof (Type of Ivar) - uint64_t Size = getContext().getTypeSize(Ivar->getType()) / 8; + CharUnits Size = getContext().getTypeSizeInChars(Ivar->getType()); llvm::Value *SizeVal = - llvm::ConstantInt::get(Types.ConvertType(getContext().LongTy), Size); + llvm::ConstantInt::get(Types.ConvertType(getContext().LongTy), + Size.getQuantity()); Args.push_back(std::make_pair(RValue::get(SizeVal), getContext().LongTy)); llvm::Value *True =