diff options
author | Benjamin Kramer <benny.kra@googlemail.com> | 2010-12-30 00:13:21 +0000 |
---|---|---|
committer | Benjamin Kramer <benny.kra@googlemail.com> | 2010-12-30 00:13:21 +0000 |
commit | 9f0c7cc36d29cf591c33962931f5862847145f3e (patch) | |
tree | 39269ee4705c774eb1f09846e64c98036662c506 /lib/CodeGen/CGDecl.cpp | |
parent | 272324bc881450a71873d2f4e72f17837d8998df (diff) |
Simplify mem{cpy, move, set} creation with IRBuilder.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@122634 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/CGDecl.cpp')
-rw-r--r-- | lib/CodeGen/CGDecl.cpp | 16 |
1 files changed, 4 insertions, 12 deletions
diff --git a/lib/CodeGen/CGDecl.cpp b/lib/CodeGen/CGDecl.cpp index 9490769407..de4cca3a28 100644 --- a/lib/CodeGen/CGDecl.cpp +++ b/lib/CodeGen/CGDecl.cpp @@ -810,26 +810,20 @@ void CodeGenFunction::EmitAutoVarDecl(const VarDecl &D, llvm::Constant *Init = CGM.EmitConstantExpr(D.getInit(), Ty,this); assert(Init != 0 && "Wasn't a simple constant init?"); - llvm::Value *AlignVal = Builder.getInt32(Align.getQuantity()); llvm::Value *SizeVal = llvm::ConstantInt::get(CGF.IntPtrTy, getContext().getTypeSizeInChars(Ty).getQuantity()); - const llvm::Type *BP = llvm::Type::getInt8PtrTy(VMContext); + const llvm::Type *BP = Builder.getInt8PtrTy(); if (Loc->getType() != BP) Loc = Builder.CreateBitCast(Loc, BP, "tmp"); - - llvm::Value *NotVolatile = Builder.getFalse(); // If the initializer is all or mostly zeros, codegen with memset then do // a few stores afterward. if (shouldUseMemSetPlusStoresToInitialize(Init, CGM.getTargetData().getTypeAllocSize(Init->getType()))) { - const llvm::Type *BP = llvm::Type::getInt8PtrTy(VMContext); - - Builder.CreateCall5(CGM.getMemSetFn(BP, SizeVal->getType()), - Loc, Builder.getInt8(0), SizeVal, AlignVal, - NotVolatile); + Builder.CreateMemSet(Loc, Builder.getInt8(0), SizeVal, + Align.getQuantity(), false); if (!Init->isNullValue()) { Loc = Builder.CreateBitCast(Loc, Init->getType()->getPointerTo()); emitStoresForInitAfterMemset(Init, Loc, Builder); @@ -849,9 +843,7 @@ void CodeGenFunction::EmitAutoVarDecl(const VarDecl &D, if (SrcPtr->getType() != BP) SrcPtr = Builder.CreateBitCast(SrcPtr, BP, "tmp"); - Builder.CreateCall5(CGM.getMemCpyFn(Loc->getType(), SrcPtr->getType(), - SizeVal->getType()), - Loc, SrcPtr, SizeVal, AlignVal, NotVolatile); + Builder.CreateMemCpy(Loc, SrcPtr, SizeVal, Align.getQuantity(), false); } } else if (Ty->isReferenceType()) { RValue RV = EmitReferenceBindingToExpr(Init, &D); |