summaryrefslogtreecommitdiffstats
path: root/llvm/lib/Transforms
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2010-12-01 01:24:55 +0000
committerChris Lattner <sabre@nondot.org>2010-12-01 01:24:55 +0000
commit1c577b54b00c8cbe399fb78f611d55747107a623 (patch)
treed3439d145a6439cd7f3d51b0c34f7c0ba3dc659c /llvm/lib/Transforms
parent490240a5d96a71da6fa33b337c5902bdbc4103ea (diff)
downloadbcm5719-llvm-1c577b54b00c8cbe399fb78f611d55747107a623.tar.gz
bcm5719-llvm-1c577b54b00c8cbe399fb78f611d55747107a623.zip
fix a bozo bug I introduced in r119930, causing a miscompile of
20040709-1.c from the gcc testsuite. I was using the size of a pointer instead of the pointee. This fixes rdar://8713376 llvm-svn: 120519
Diffstat (limited to 'llvm/lib/Transforms')
-rw-r--r--llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp3
1 files changed, 2 insertions, 1 deletions
diff --git a/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp b/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
index 087f022fe9d..5d867e71547 100644
--- a/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
+++ b/llvm/lib/Transforms/Scalar/MemCpyOptimizer.cpp
@@ -814,7 +814,8 @@ bool MemCpyOpt::processByValArgument(CallSite CS, unsigned ArgNo) {
// Find out what feeds this byval argument.
Value *ByValArg = CS.getArgument(ArgNo);
- uint64_t ByValSize = TD->getTypeAllocSize(ByValArg->getType());
+ const Type *ByValTy =cast<PointerType>(ByValArg->getType())->getElementType();
+ uint64_t ByValSize = TD->getTypeAllocSize(ByValTy);
MemDepResult DepInfo =
MD->getPointerDependencyFrom(AliasAnalysis::Location(ByValArg, ByValSize),
true, CS.getInstruction(),
OpenPOWER on IntegriCloud