diff options
| author | Roman Divacky <rdivacky@FreeBSD.org> | 2010-04-06 15:53:59 +0000 | 
|---|---|---|
| committer | Roman Divacky <rdivacky@FreeBSD.org> | 2010-04-06 15:53:59 +0000 | 
| commit | 60bfabcd8ce617297c0d231f77d14ab507e98796 (patch) | |
| tree | 59c928209f8007777dd96568b026bdfe200691de /lib/CodeGen/CodeGenModule.cpp | |
| parent | 2c56c396ce5990954f85194029eeb391bc3529ff (diff) | |
Notes
Diffstat (limited to 'lib/CodeGen/CodeGenModule.cpp')
| -rw-r--r-- | lib/CodeGen/CodeGenModule.cpp | 30 | 
1 files changed, 16 insertions, 14 deletions
| diff --git a/lib/CodeGen/CodeGenModule.cpp b/lib/CodeGen/CodeGenModule.cpp index 3c872c8560d2..a2ad31e85a80 100644 --- a/lib/CodeGen/CodeGenModule.cpp +++ b/lib/CodeGen/CodeGenModule.cpp @@ -47,8 +47,7 @@ CodeGenModule::CodeGenModule(ASTContext &C, const CodeGenOptions &CGO,      Features(C.getLangOptions()), CodeGenOpts(CGO), TheModule(M),      TheTargetData(TD), TheTargetCodeGenInfo(0), Diags(diags),      Types(C, M, TD, getTargetCodeGenInfo().getABIInfo()), -    MangleCtx(C), VTables(*this), Runtime(0), -    MemCpyFn(0), MemMoveFn(0), MemSetFn(0), CFConstantStringClassRef(0), +    MangleCtx(C), VTables(*this), Runtime(0), CFConstantStringClassRef(0),      VMContext(M.getContext()) {    if (!Features.ObjC1) @@ -1414,22 +1413,25 @@ llvm::Function *CodeGenModule::getIntrinsic(unsigned IID,const llvm::Type **Tys,                                           (llvm::Intrinsic::ID)IID, Tys, NumTys);  } -llvm::Function *CodeGenModule::getMemCpyFn() { -  if (MemCpyFn) return MemCpyFn; -  const llvm::Type *IntPtr = TheTargetData.getIntPtrType(VMContext); -  return MemCpyFn = getIntrinsic(llvm::Intrinsic::memcpy, &IntPtr, 1); + +llvm::Function *CodeGenModule::getMemCpyFn(const llvm::Type *DestType, +                                           const llvm::Type *SrcType, +                                           const llvm::Type *SizeType) { +  const llvm::Type *ArgTypes[3] = {DestType, SrcType, SizeType }; +  return getIntrinsic(llvm::Intrinsic::memcpy, ArgTypes, 3);  } -llvm::Function *CodeGenModule::getMemMoveFn() { -  if (MemMoveFn) return MemMoveFn; -  const llvm::Type *IntPtr = TheTargetData.getIntPtrType(VMContext); -  return MemMoveFn = getIntrinsic(llvm::Intrinsic::memmove, &IntPtr, 1); +llvm::Function *CodeGenModule::getMemMoveFn(const llvm::Type *DestType, +                                            const llvm::Type *SrcType, +                                            const llvm::Type *SizeType) { +  const llvm::Type *ArgTypes[3] = {DestType, SrcType, SizeType }; +  return getIntrinsic(llvm::Intrinsic::memmove, ArgTypes, 3);  } -llvm::Function *CodeGenModule::getMemSetFn() { -  if (MemSetFn) return MemSetFn; -  const llvm::Type *IntPtr = TheTargetData.getIntPtrType(VMContext); -  return MemSetFn = getIntrinsic(llvm::Intrinsic::memset, &IntPtr, 1); +llvm::Function *CodeGenModule::getMemSetFn(const llvm::Type *DestType, +                                           const llvm::Type *SizeType) { +  const llvm::Type *ArgTypes[2] = { DestType, SizeType }; +  return getIntrinsic(llvm::Intrinsic::memset, ArgTypes, 2);  }  static llvm::StringMapEntry<llvm::Constant*> & | 
