From: Ken Dyck Date: Wed, 19 Jan 2011 01:58:38 +0000 (+0000) Subject: Replace calls to getTypeSize() and getTypeAlign() with their 'InChars' X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=fe71008c2764768f25478b16c1802755189ed7c9;p=clang Replace calls to getTypeSize() and getTypeAlign() with their 'InChars' counterparts where char units are needed. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@123805 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGCall.cpp b/lib/CodeGen/CGCall.cpp index 01e9d8ea8c..e6e5ea1970 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 e6af820d77..bdc4ef723a 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(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 246ecb2d2c..01d671a2d9 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 fde9f03ba7..0a192457a4 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()) { // 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 0837c578a7..1c64e3cb4c 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 =