diff options
| author | Chris Lattner <sabre@nondot.org> | 2009-03-01 02:26:47 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2009-03-01 02:26:47 +0000 |
| commit | e2bb5e31c8833897eebe1b4ddc892d5f771330fe (patch) | |
| tree | 75d16d07e83227dff69cb76e39fe236cd6c5f3b3 /llvm | |
| parent | 53f12b11dcd84d9c43deeca73aeba11f87960e9e (diff) | |
| download | bcm5719-llvm-e2bb5e31c8833897eebe1b4ddc892d5f771330fe.tar.gz bcm5719-llvm-e2bb5e31c8833897eebe1b4ddc892d5f771330fe.zip | |
hoist the check for alloca size up so that it controls CanConvertToScalar
as well as isSafeAllocaToScalarRepl.
llvm-svn: 65755
Diffstat (limited to 'llvm')
| -rw-r--r-- | llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp b/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp index 3a4201bf81e..92ac76be74f 100644 --- a/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp +++ b/llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp @@ -253,11 +253,13 @@ bool SROA::performScalarRepl(Function &F) { // (allocations OF arrays are ok though), and an allocation of a scalar // value cannot be decomposed at all. uint64_t AllocaSize = TD->getTypePaddedSize(AI->getAllocatedType()); - + + // Do not promote any struct whose size is too big. + if (AllocaSize < SRThreshold) + continue; + if ((isa<StructType>(AI->getAllocatedType()) || isa<ArrayType>(AI->getAllocatedType())) && - // Do not promote any struct whose size is too big. - AllocaSize < SRThreshold && // Do not promote any struct into more than "32" separate vars. getNumSAElements(AI->getAllocatedType()) < SRThreshold/4) { // Check that all of the users of the allocation are capable of being |

