diff options
author | Chris Lattner <sabre@nondot.org> | 2008-11-21 16:42:48 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2008-11-21 16:42:48 +0000 |
commit | dd7083452fd0b9f69ed71e00dca3dbf41831586d (patch) | |
tree | 5bfc47f2a29ed613c058dee3535d5175b53b717b /llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp | |
parent | 5d58c3a568b64df97ec16b992c7be07adfdf69e6 (diff) | |
download | bcm5719-llvm-dd7083452fd0b9f69ed71e00dca3dbf41831586d.tar.gz bcm5719-llvm-dd7083452fd0b9f69ed71e00dca3dbf41831586d.zip |
reapply Sanjiv's patch to genericize memcpy/memset/memmove to take an
arbitrary integer width for the count.
llvm-svn: 59823
Diffstat (limited to 'llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp')
-rw-r--r-- | llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp b/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp index 7ccca002398..6d27327991f 100644 --- a/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp +++ b/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp @@ -427,9 +427,12 @@ bool MemCpyOpt::processStore(StoreInst *SI, BasicBlock::iterator& BBI) { // instruction needed by the start of the block. BasicBlock::iterator InsertPt = BI; - if (MemSetF == 0) + if (MemSetF == 0) { + const Type *Tys[] = {Type::Int64Ty}; MemSetF = Intrinsic::getDeclaration(SI->getParent()->getParent() - ->getParent(), Intrinsic::memset_i64); + ->getParent(), Intrinsic::memset, + Tys, 1); + } // Get the starting pointer of the block. StartPtr = Range.StartPtr; @@ -671,9 +674,11 @@ bool MemCpyOpt::processMemCpy(MemCpyInst* M) { return false; // If all checks passed, then we can transform these memcpy's + const Type *Tys[1]; + Tys[0] = M->getLength()->getType(); Function* MemCpyFun = Intrinsic::getDeclaration( M->getParent()->getParent()->getParent(), - M->getIntrinsicID()); + M->getIntrinsicID(), Tys, 1); std::vector<Value*> args; args.push_back(M->getRawDest()); |