On Nov 20, 2008, at 11:57 PM, Sanjiv Gupta wrote: > URL: http://llvm.org/viewvc/llvm-project?rev=59806&view=rev > Log: > mem[cpy,set,move] intrinsics are now overloaded.
Sanjiv, this patch is incorrect for exactly the reasons that the llvm side was broken, you're not passing in a type to getIntrinsic to set the size. Please make sure to run make test before committing, thanks! -Chris > > +++ cfe/trunk/lib/CodeGen/CGExprAgg.cpp Fri Nov 21 01:57:42 2008 > @@ -327,7 +327,7 @@ > // There's a potential optimization opportunity in combining > // memsets; that would be easy for arrays, but relatively > // difficult for structures with the current code. > - llvm::Value *MemSet = > CGF.CGM.getIntrinsic(llvm::Intrinsic::memset_i64); > + llvm::Value *MemSet = > CGF.CGM.getIntrinsic(llvm::Intrinsic::memset); > uint64_t Size = CGF.getContext().getTypeSize(T); > > const llvm::Type *BP = > llvm::PointerType::getUnqual(llvm::Type::Int8Ty); > > Modified: cfe/trunk/lib/CodeGen/CodeGenModule.cpp > URL: > http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CodeGenModule.cpp?rev=59806&r1=59805&r2=59806&view=diff > > = > = > = > = > = > = > = > = > ====================================================================== > --- cfe/trunk/lib/CodeGen/CodeGenModule.cpp (original) > +++ cfe/trunk/lib/CodeGen/CodeGenModule.cpp Fri Nov 21 01:57:42 2008 > @@ -757,38 +757,17 @@ > > llvm::Function *CodeGenModule::getMemCpyFn() { > if (MemCpyFn) return MemCpyFn; > - llvm::Intrinsic::ID IID; > - switch (Context.Target.getPointerWidth(0)) { > - default: assert(0 && "Unknown ptr width"); > - case 16: IID = llvm::Intrinsic::memcpy_i16; break; > - case 32: IID = llvm::Intrinsic::memcpy_i32; break; > - case 64: IID = llvm::Intrinsic::memcpy_i64; break; > - } > - return MemCpyFn = getIntrinsic(IID); > + return MemCpyFn = getIntrinsic(llvm::Intrinsic::memcpy); > } > > llvm::Function *CodeGenModule::getMemMoveFn() { > if (MemMoveFn) return MemMoveFn; > - llvm::Intrinsic::ID IID; > - switch (Context.Target.getPointerWidth(0)) { > - default: assert(0 && "Unknown ptr width"); > - case 16: IID = llvm::Intrinsic::memmove_i16; break; > - case 32: IID = llvm::Intrinsic::memmove_i32; break; > - case 64: IID = llvm::Intrinsic::memmove_i64; break; > - } > - return MemMoveFn = getIntrinsic(IID); > + return MemMoveFn = getIntrinsic(llvm::Intrinsic::memmove); > } > > llvm::Function *CodeGenModule::getMemSetFn() { > if (MemSetFn) return MemSetFn; > - llvm::Intrinsic::ID IID; > - switch (Context.Target.getPointerWidth(0)) { > - default: assert(0 && "Unknown ptr width"); > - case 16: IID = llvm::Intrinsic::memset_i16; break; > - case 32: IID = llvm::Intrinsic::memset_i32; break; > - case 64: IID = llvm::Intrinsic::memset_i64; break; > - } > - return MemSetFn = getIntrinsic(IID); > + return MemSetFn = getIntrinsic(llvm::Intrinsic::memset); > } > > static void appendFieldAndPadding(CodeGenModule &CGM, > > > _______________________________________________ > cfe-commits mailing list > [email protected] > http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits _______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
