Changes in directory llvm/lib/Transforms/Scalar:

ScalarReplAggregates.cpp updated: 1.94 -> 1.95
---
Log message:

Fix PR1446: http://llvm.org/PR1446  by not scalarrepl'ing giant structures.


---
Diffs of the changes:  (+5 -1)

 ScalarReplAggregates.cpp |    6 +++++-
 1 files changed, 5 insertions(+), 1 deletion(-)


Index: llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp
diff -u llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.94 
llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.95
--- llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp:1.94    Sun May  6 
08:37:16 2007
+++ llvm/lib/Transforms/Scalar/ScalarReplAggregates.cpp Thu May 24 13:43:04 2007
@@ -148,6 +148,8 @@
     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 @@
     // 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)) {



_______________________________________________
llvm-commits mailing list
llvm-commits@cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits

Reply via email to