svn commit: r244598 - head/contrib/llvm/lib/Transforms/Scalar
Dimitry Andric
dim at FreeBSD.org
Sat Dec 22 20:16:21 UTC 2012
Author: dim
Date: Sat Dec 22 20:16:21 2012
New Revision: 244598
URL: http://svnweb.freebsd.org/changeset/base/244598
Log:
Pull in r170353 from upstream llvm trunk:
Fix another SROA crasher, PR14601.
This was a silly oversight, we weren't pruning allocas which were used
by variable-length memory intrinsics from the set that could be widened
and promoted as integers. Fix that.
This should fix the following assertion failure:
Assertion failed: (CanSROA), function visitUsers, file
/usr/src/lib/clang/libllvmscalaropts/../../../contrib/llvm/lib/Transforms/Scalar/SROA.cpp,
line 2395.
Reported by: gerald
Modified:
head/contrib/llvm/lib/Transforms/Scalar/SROA.cpp
Modified: head/contrib/llvm/lib/Transforms/Scalar/SROA.cpp
==============================================================================
--- head/contrib/llvm/lib/Transforms/Scalar/SROA.cpp Sat Dec 22 20:05:42 2012 (r244597)
+++ head/contrib/llvm/lib/Transforms/Scalar/SROA.cpp Sat Dec 22 20:16:21 2012 (r244598)
@@ -2224,7 +2224,7 @@ static bool isIntegerWideningViable(cons
!canConvertValue(TD, ValueTy, AllocaTy))
return false;
} else if (MemIntrinsic *MI = dyn_cast<MemIntrinsic>(I->U->getUser())) {
- if (MI->isVolatile())
+ if (MI->isVolatile() || !isa<Constant>(MI->getLength()))
return false;
if (MemTransferInst *MTI = dyn_cast<MemTransferInst>(I->U->getUser())) {
const AllocaPartitioning::MemTransferOffsets &MTO
More information about the svn-src-all
mailing list