diff options
author | Chris Lattner <sabre@nondot.org> | 2007-05-24 18:43:04 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-05-24 18:43:04 +0000 |
commit | 7139406707eb3869183fd6a3329fe4a77d309692 (patch) | |
tree | 2274620251a79a63f028d6bb1d7f1bb841541d81 | |
parent | d20d40299bfdb1b31db0f9e7b695baa34dfdfd4c (diff) |
Fix PR1446 by not scalarrepl'ing giant structures.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37326 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r-- | lib/Transforms/Scalar/ScalarReplAggregates.cpp | 6 |
1 files changed, 5 insertions, 1 deletions
diff --git a/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/lib/Transforms/Scalar/ScalarReplAggregates.cpp index 18e05bb2e3..977f22ebf6 100644 --- a/lib/Transforms/Scalar/ScalarReplAggregates.cpp +++ b/lib/Transforms/Scalar/ScalarReplAggregates.cpp @@ -148,6 +148,8 @@ bool SROA::performScalarRepl(Function &F) { if (AllocationInst *A = dyn_cast<AllocationInst>(I)) WorkList.push_back(A); + const TargetData &TD = getAnalysis<TargetData>(); + // Process the worklist bool Changed = false; while (!WorkList.empty()) { @@ -177,7 +179,9 @@ bool SROA::performScalarRepl(Function &F) { // value cannot be decomposed at all. if (!AI->isArrayAllocation() && (isa<StructType>(AI->getAllocatedType()) || - isa<ArrayType>(AI->getAllocatedType()))) { + isa<ArrayType>(AI->getAllocatedType())) && + AI->getAllocatedType()->isSized() && + TD.getTypeSize(AI->getAllocatedType()) < 128) { // Check that all of the users of the allocation are capable of being // transformed. switch (isSafeAllocaToScalarRepl(AI)) { |