summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2011-01-08 22:11:56 +0000
committerChris Lattner <sabre@nondot.org>2011-01-08 22:11:56 +0000
commitff6ed2ac5f3d7009b9dc51a29c2e033defbf9acb (patch)
treefb3a1751748905c03cef07409a2f234ded1d5b26 /llvm/lib/Transforms
parent9a1d63ba9fd2030920b53479a0113affa780d588 (diff)
downloadbcm5719-llvm-ff6ed2ac5f3d7009b9dc51a29c2e033defbf9acb.tar.gz
bcm5719-llvm-ff6ed2ac5f3d7009b9dc51a29c2e033defbf9acb.zip
tryMergingIntoMemset can only handle constant length memsets.
llvm-svn: 123090
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp11
1 files changed, 6 insertions, 5 deletions
diff --git a/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp b/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
index 4210f0d9b79..76fab1cd281 100644
--- a/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
+++ b/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
@@ -515,11 +515,12 @@ bool MemCpyOpt::processStore(StoreInst *SI, BasicBlock::iterator &BBI) {
bool MemCpyOpt::processMemSet(MemSetInst *MSI, BasicBlock::iterator &BBI) {
// See if there is another memset or store neighboring this memset which
// allows us to widen out the memset to do a single larger store.
- if (Instruction *I = tryMergingIntoMemset(MSI, MSI->getDest(),
- MSI->getValue())) {
- BBI = I; // Don't invalidate iterator.
- return true;
- }
+ if (isa<ConstantInt>(MSI->getLength()) && !MSI->isVolatile())
+ if (Instruction *I = tryMergingIntoMemset(MSI, MSI->getDest(),
+ MSI->getValue())) {
+ BBI = I; // Don't invalidate iterator.
+ return true;
+ }
return false;
}
OpenPOWER on IntegriCloud