[llvm-commits] [llvm] r89482 - /llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp
Eric Christopher
echristo at apple.com
Fri Nov 20 12:22:39 PST 2009
Thanks. Sorry about that.
-eric
On Nov 20, 2009, at 12:17 PM, Daniel Dunbar <daniel at zuster.org> wrote:
> Author: ddunbar
> Date: Fri Nov 20 14:17:30 2009
> New Revision: 89482
>
> URL: http://llvm.org/viewvc/llvm-project?rev=89482&view=rev
> Log:
> Revert "Add some rough optimizations for checking routines.", it
> buildeth not.
>
> Modified:
> llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp
>
> Modified: llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp?rev=89482&r1=89481&r2=89482&view=diff
>
> ===
> ===
> ===
> =====================================================================
> --- llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp (original)
> +++ llvm/trunk/lib/Transforms/Scalar/SimplifyLibCalls.cpp Fri Nov 20
> 14:17:30 2009
> @@ -81,9 +81,6 @@
> Value *EmitMemCpy(Value *Dst, Value *Src, Value *Len,
> unsigned Align, IRBuilder<> &B);
>
> - Value *EmitMemMove(Value *Dst, Value *Src, Value *Len,
> - unsigned Align, IRBuilder<> &B);
> -
> /// EmitMemChr - Emit a call to the memchr function. This assumes
> that Ptr is
> /// a pointer, Val is an i32 value, and Len is an 'intptr_t' value.
> Value *EmitMemChr(Value *Ptr, Value *Val, Value *Len, IRBuilder<>
> &B);
> @@ -163,22 +160,6 @@
> ConstantInt::get(Type::getInt32Ty(*Context),
> Align));
> }
>
> -/// EmitMemMOve - Emit a call to the memmove function to the
> builder. This
> -/// always expects that the size has type 'intptr_t' and Dst/Src
> are pointers.
> -Value *LibCallOptimization::EmitMemMove(Value *Dst, Value *Src,
> Value *Len,
> - unsigned Align, IRBuilder<> &B) {
> - Module *M = Caller->getParent();
> - Intrinsic::ID IID = Intrinsic::memmove;
> - const Type *Tys[1];
> - Tys[0] = TD->getIntPtrType(*Context);
> - Value *MemMove = Intrinsic::getDeclaration(M, IID, Tys, 1);
> - Value *Dst = CastToCStr(CI->getOperand(1), B);
> - Value *Src = CastToCStr(CI->getOperand(2), B);
> - Value *Size = CI->getOperand(3);
> - Value *Align = ConstantInt::get(Type::getInt32Ty(*Context), 1);
> - return B.CreateCall4(MemMove, Dst, Src, Size, Align);
> -}
> -
> /// EmitMemChr - Emit a call to the memchr function. This assumes
> that Ptr is
> /// a pointer, Val is an i32 value, and Len is an 'intptr_t' value.
> Value *LibCallOptimization::EmitMemChr(Value *Ptr, Value *Val,
> @@ -1029,7 +1010,16 @@
> return 0;
>
> // memmove(x, y, n) -> llvm.memmove(x, y, n, 1)
> - EmitMemMove(CI->getOperand(1), CI->getOperand(2), CI->getOperand
> (3), 1, B);
> + Module *M = Caller->getParent();
> + Intrinsic::ID IID = Intrinsic::memmove;
> + const Type *Tys[1];
> + Tys[0] = TD->getIntPtrType(*Context);
> + Value *MemMove = Intrinsic::getDeclaration(M, IID, Tys, 1);
> + Value *Dst = CastToCStr(CI->getOperand(1), B);
> + Value *Src = CastToCStr(CI->getOperand(2), B);
> + Value *Size = CI->getOperand(3);
> + Value *Align = ConstantInt::get(Type::getInt32Ty(*Context), 1);
> + B.CreateCall4(MemMove, Dst, Src, Size, Align);
> return CI->getOperand(1);
> }
> };
> @@ -1058,96 +1048,6 @@
> };
>
> //
> ===
> ---
> -------------------------------------------------------------------
> ===//
> -// Object Size Checking Optimizations
> -//
> ===
> ---
> -------------------------------------------------------------------
> ===//
> -//===---------------------------------------===//
> -// 'memcpy_chk' Optimizations
> -
> -struct MemCpyChkOpt : public LibCallOptimization {
> - virtual Value *CallOptimizer(Function *Callee, CallInst *CI,
> IRBuilder<> &B) {
> - // These optimizations require TargetData.
> - if (!TD) return 0;
> -
> - const FunctionType *FT = Callee->getFunctionType();
> - if (FT->getNumParams() != 4 || FT->getReturnType() != FT-
> >getParamType(0) ||
> - !isa<PointerType>(FT->getParamType(0)) ||
> - !isa<PointerType>(FT->getParamType(1)) ||
> - !isa<IntegerType>(FT->getParamType(3)) ||
> - FT->getParamType(2) != TD->getIntPtrType(*Context))
> - return 0;
> -
> - ConstantInt *SizeCI = dyn_cast<ConstantInt>(CI->getOperand(4));
> - if (!SizeCI)
> - return 0;
> - if (SizeCI->isAllOnesValue()) {
> - EmitMemCpy(CI->getOperand(1), CI->getOperand(2), CI-
> >getOperand(3), 1, B);
> - return CI->getOperand(1);
> - }
> -
> - return 0;
> - }
> -};
> -
> -//===---------------------------------------===//
> -// 'memset_chk' Optimizations
> -
> -struct MemSetChkOpt : public LibCallOptimization {
> - virtual Value *CallOptimizer(Function *Callee, CallInst *CI,
> IRBuilder<> &B) {
> - // These optimizations require TargetData.
> - if (!TD) return 0;
> -
> - const FunctionType *FT = Callee->getFunctionType();
> - if (FT->getNumParams() != 4 || FT->getReturnType() != FT-
> >getParamType(0) ||
> - !isa<PointerType>(FT->getParamType(0)) ||
> - !isa<IntegerType>(FT->getParamType(1)) ||
> - !isa<IntegerType>(FT->getParamType(3)) ||
> - FT->getParamType(2) != TD->getIntPtrType(*Context))
> - return 0;
> -
> - ConstantInt *SizeCI = dyn_cast<ConstantInt>(CI->getOperand(4));
> - if (!SizeCI)
> - return 0;
> - if (SizeCI->isAllOnesValue()) {
> - Value *Val = B.CreateIntCast(CI->getOperand(2),
> Type::getInt8Ty(*Context),
> - false);
> - EmitMemSet(CI->getOperand(1), Val, CI->getOperand(3), B);
> - return CI->getOperand(1);
> - }
> -
> - return 0;
> - }
> -};
> -
> -//===---------------------------------------===//
> -// 'memmove_chk' Optimizations
> -
> -struct MemMoveChkOpt : public LibCallOptimization {
> - virtual Value *CallOptimizer(Function *Callee, CallInst *CI,
> IRBuilder<> &B) {
> - // These optimizations require TargetData.
> - if (!TD) return 0;
> -
> - const FunctionType *FT = Callee->getFunctionType();
> - if (FT->getNumParams() != 4 || FT->getReturnType() != FT-
> >getParamType(0) ||
> - !isa<PointerType>(FT->getParamType(0)) ||
> - !isa<PointerType>(FT->getParamType(1)) ||
> - !isa<IntegerType>(FT->getParamType(3)) ||
> - FT->getParamType(2) != TD->getIntPtrType(*Context))
> - return 0;
> -
> - ConstantInt *SizeCI = dyn_cast<ConstantInt>(CI->getOperand(4));
> - if (!SizeCI)
> - return 0;
> - if (SizeCI->isAllOnesValue()) {
> - EmitMemMove(CI->getOperand(1), CI->getOperand(2), CI-
> >getOperand(3),
> - 1, B);
> - return CI->getOperand(1);
> - }
> -
> - return 0;
> - }
> -};
> -
> -//
> ===
> ---
> -------------------------------------------------------------------
> ===//
> // Math Library Optimizations
> //
> ===
> ---
> -------------------------------------------------------------------
> ===//
>
> @@ -1686,10 +1586,7 @@
> // Formatting and IO Optimizations
> SPrintFOpt SPrintF; PrintFOpt PrintF;
> FWriteOpt FWrite; FPutsOpt FPuts; FPrintFOpt FPrintF;
> -
> - // Object Size Checking
> SizeOpt ObjectSize;
> - MemCpyChkOpt MemCpyChk; MemSetChkOpt MemSetChk; MemMoveChkOpt
> MemMoveChk;
>
> bool Modified; // This is only used by doInitialization.
> public:
> @@ -1796,12 +1693,8 @@
> Optimizations["fputs"] = &FPuts;
> Optimizations["fprintf"] = &FPrintF;
>
> - // Object Size Checking
> - Optimizations["llvm.objectsize.i32"] = &ObjectSize;
> - Optimizations["llvm.objectsize.i64"] = &ObjectSize;
> - Optimizations["__memcpy_chk"] = &MemCpyChk;
> - Optimizations["__memset_chk"] = &MemSetChk;
> - Optimizations["__memmove_chk"] = &MemMoveChk;
> + // Miscellaneous
> + Optimizations["llvm.objectsize"] = &ObjectSize;
> }
>
>
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits
More information about the llvm-commits
mailing list