diff options
Diffstat (limited to 'clang/lib')
| -rw-r--r-- | clang/lib/CodeGen/CodeGenFunction.cpp | 16 | 
1 files changed, 9 insertions, 7 deletions
diff --git a/clang/lib/CodeGen/CodeGenFunction.cpp b/clang/lib/CodeGen/CodeGenFunction.cpp index 0320446ba4d..626c2b09a03 100644 --- a/clang/lib/CodeGen/CodeGenFunction.cpp +++ b/clang/lib/CodeGen/CodeGenFunction.cpp @@ -654,15 +654,16 @@ CodeGenFunction::EmitNullInitialization(llvm::Value *DestPtr, QualType Ty) {      DestPtr = Builder.CreateBitCast(DestPtr, BP, "tmp");    // Get size and alignment info for this aggregate. -  std::pair<uint64_t, unsigned> TypeInfo = getContext().getTypeInfo(Ty); -  uint64_t Size = TypeInfo.first / 8; -  unsigned Align = TypeInfo.second / 8; +  std::pair<CharUnits, CharUnits> TypeInfo =  +    getContext().getTypeInfoInChars(Ty); +  CharUnits Size = TypeInfo.first; +  CharUnits Align = TypeInfo.second;    llvm::Value *SizeVal;    const VariableArrayType *vla;    // Don't bother emitting a zero-byte memset. -  if (Size == 0) { +  if (Size.isZero()) {      // But note that getTypeInfo returns 0 for a VLA.      if (const VariableArrayType *vlaType =            dyn_cast_or_null<VariableArrayType>( @@ -673,7 +674,7 @@ CodeGenFunction::EmitNullInitialization(llvm::Value *DestPtr, QualType Ty) {        return;      }    } else { -    SizeVal = llvm::ConstantInt::get(IntPtrTy, Size); +    SizeVal = llvm::ConstantInt::get(IntPtrTy, Size.getQuantity());      vla = 0;    } @@ -698,14 +699,15 @@ CodeGenFunction::EmitNullInitialization(llvm::Value *DestPtr, QualType Ty) {      if (vla) return emitNonZeroVLAInit(*this, Ty, DestPtr, SrcPtr, SizeVal);      // Get and call the appropriate llvm.memcpy overload. -    Builder.CreateMemCpy(DestPtr, SrcPtr, SizeVal, Align, false); +    Builder.CreateMemCpy(DestPtr, SrcPtr, SizeVal, Align.getQuantity(), false);      return;    }     // Otherwise, just memset the whole thing to zero.  This is legal    // because in LLVM, all default initializers (other than the ones we just    // handled above) are guaranteed to have a bit pattern of all zeros. -  Builder.CreateMemSet(DestPtr, Builder.getInt8(0), SizeVal, Align, false); +  Builder.CreateMemSet(DestPtr, Builder.getInt8(0), SizeVal,  +                       Align.getQuantity(), false);  }  llvm::BlockAddress *CodeGenFunction::GetAddrOfLabel(const LabelDecl *L) {  | 

