diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2010-04-06 15:52:58 +0000 | 
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2010-04-06 15:52:58 +0000 | 
| commit | 9f4a1da9a0a56a0b0a7f8249f34b3cdea6179c41 (patch) | |
| tree | 0dd020f28a4846707f8d60717d9b2921ea187bd8 /lib/Transforms/Utils/InlineFunction.cpp | |
| parent | b5efedaf2ab20d844d5a21cdef76b55acbf4f01c (diff) | |
Notes
Diffstat (limited to 'lib/Transforms/Utils/InlineFunction.cpp')
| -rw-r--r-- | lib/Transforms/Utils/InlineFunction.cpp | 11 | 
1 files changed, 6 insertions, 5 deletions
diff --git a/lib/Transforms/Utils/InlineFunction.cpp b/lib/Transforms/Utils/InlineFunction.cpp index 17f8827fd5c0..75c9ccdd7a93 100644 --- a/lib/Transforms/Utils/InlineFunction.cpp +++ b/lib/Transforms/Utils/InlineFunction.cpp @@ -297,10 +297,10 @@ bool llvm::InlineFunction(CallSite CS, CallGraph *CG, const TargetData *TD,                                            I->getName(),                                             &*Caller->begin()->begin());          // Emit a memcpy. -        const Type *Tys[] = { Type::getInt64Ty(Context) }; +        const Type *Tys[3] = {VoidPtrTy, VoidPtrTy, Type::getInt64Ty(Context)};          Function *MemCpyFn = Intrinsic::getDeclaration(Caller->getParent(),                                                         Intrinsic::memcpy,  -                                                       Tys, 1); +                                                       Tys, 3);          Value *DestCast = new BitCastInst(NewAlloca, VoidPtrTy, "tmp", TheCall);          Value *SrcCast = new BitCastInst(*AI, VoidPtrTy, "tmp", TheCall); @@ -309,17 +309,18 @@ bool llvm::InlineFunction(CallSite CS, CallGraph *CG, const TargetData *TD,            Size = ConstantExpr::getSizeOf(AggTy);          else            Size = ConstantInt::get(Type::getInt64Ty(Context), -                                         TD->getTypeStoreSize(AggTy)); +                                  TD->getTypeStoreSize(AggTy));          // Always generate a memcpy of alignment 1 here because we don't know          // the alignment of the src pointer.  Other optimizations can infer          // better alignment.          Value *CallArgs[] = {            DestCast, SrcCast, Size, -          ConstantInt::get(Type::getInt32Ty(Context), 1) +          ConstantInt::get(Type::getInt32Ty(Context), 1), +          ConstantInt::get(Type::getInt1Ty(Context), 0)          };          CallInst *TheMemCpy = -          CallInst::Create(MemCpyFn, CallArgs, CallArgs+4, "", TheCall); +          CallInst::Create(MemCpyFn, CallArgs, CallArgs+5, "", TheCall);          // If we have a call graph, update it.          if (CG) {  | 
