Changes in directory llvm/lib/Transforms/IPO:

GlobalOpt.cpp updated: 1.91 -> 1.92
---
Log message:

eliminate temporary vectors


---
Diffs of the changes:  (+12 -9)

 GlobalOpt.cpp |   21 ++++++++++++---------
 1 files changed, 12 insertions(+), 9 deletions(-)


Index: llvm/lib/Transforms/IPO/GlobalOpt.cpp
diff -u llvm/lib/Transforms/IPO/GlobalOpt.cpp:1.91 
llvm/lib/Transforms/IPO/GlobalOpt.cpp:1.92
--- llvm/lib/Transforms/IPO/GlobalOpt.cpp:1.91  Tue Jan 30 17:46:24 2007
+++ llvm/lib/Transforms/IPO/GlobalOpt.cpp       Tue Jan 30 22:40:53 2007
@@ -25,6 +25,7 @@
 #include "llvm/Analysis/ConstantFolding.h"
 #include "llvm/Target/TargetData.h"
 #include "llvm/Support/Debug.h"
+#include "llvm/ADT/SmallVector.h"
 #include "llvm/ADT/Statistic.h"
 #include "llvm/ADT/StringExtras.h"
 #include <algorithm>
@@ -443,11 +444,12 @@
     // Form a shorter GEP if needed.
     if (GEP->getNumOperands() > 3)
       if (ConstantExpr *CE = dyn_cast<ConstantExpr>(GEP)) {
-        std::vector<Constant*> Idxs;
+        SmallVector<Constant*, 8> Idxs;
         Idxs.push_back(NullInt);
         for (unsigned i = 3, e = CE->getNumOperands(); i != e; ++i)
           Idxs.push_back(CE->getOperand(i));
-        NewPtr = ConstantExpr::getGetElementPtr(cast<Constant>(NewPtr), Idxs);
+        NewPtr = ConstantExpr::getGetElementPtr(cast<Constant>(NewPtr),
+                                                &Idxs[0], Idxs.size());
       } else {
         GetElementPtrInst *GEPI = cast<GetElementPtrInst>(GEP);
         std::vector<Value*> Idxs;
@@ -576,16 +578,17 @@
       }
     } else if (GetElementPtrInst *GEPI = dyn_cast<GetElementPtrInst>(I)) {
       // Should handle GEP here.
-      std::vector<Constant*> Indices;
-      Indices.reserve(GEPI->getNumOperands()-1);
+      SmallVector<Constant*, 8> Idxs;
+      Idxs.reserve(GEPI->getNumOperands()-1);
       for (unsigned i = 1, e = GEPI->getNumOperands(); i != e; ++i)
         if (Constant *C = dyn_cast<Constant>(GEPI->getOperand(i)))
-          Indices.push_back(C);
+          Idxs.push_back(C);
         else
           break;
-      if (Indices.size() == GEPI->getNumOperands()-1)
+      if (Idxs.size() == GEPI->getNumOperands()-1)
         Changed |= OptimizeAwayTrappingUsesOfValue(GEPI,
-                                ConstantExpr::getGetElementPtr(NewV, Indices));
+                                ConstantExpr::getGetElementPtr(NewV, &Idxs[0],
+                                                               Idxs.size()));
       if (GEPI->use_empty()) {
         Changed = true;
         GEPI->eraseFromParent();
@@ -1744,10 +1747,10 @@
                                            getVal(Values, SI->getOperand(2)));
     } else if (GetElementPtrInst *GEP = dyn_cast<GetElementPtrInst>(CurInst)) {
       Constant *P = getVal(Values, GEP->getOperand(0));
-      std::vector<Constant*> GEPOps;
+      SmallVector<Constant*, 8> GEPOps;
       for (unsigned i = 1, e = GEP->getNumOperands(); i != e; ++i)
         GEPOps.push_back(getVal(Values, GEP->getOperand(i)));
-      InstResult = ConstantExpr::getGetElementPtr(P, GEPOps);
+      InstResult = ConstantExpr::getGetElementPtr(P, &GEPOps[0], 
GEPOps.size());
     } else if (LoadInst *LI = dyn_cast<LoadInst>(CurInst)) {
       if (LI->isVolatile()) return false;  // no volatile accesses.
       InstResult = ComputeLoadResult(getVal(Values, LI->getOperand(0)),



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

Reply via email to