[llvm-commits] [llvm] r63651 - /llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp

Chris Lattner sabre at nondot.org
Tue Feb 3 11:41:50 PST 2009


Author: lattner
Date: Tue Feb  3 13:41:50 2009
New Revision: 63651

URL: http://llvm.org/viewvc/llvm-project?rev=63651&view=rev
Log:
switch ConvertScalar_InsertValue to use an IRBuilder, no 
functionality change.

Modified:
    llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp

Modified: llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp?rev=63651&r1=63650&r2=63651&view=diff

==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/ScalarReplAggregates.cpp Tue Feb  3 13:41:50 2009
@@ -33,6 +33,7 @@
 #include "llvm/Transforms/Utils/PromoteMemToReg.h"
 #include "llvm/Support/Debug.h"
 #include "llvm/Support/GetElementPtrTypeIterator.h"
+#include "llvm/Support/IRBuilder.h"
 #include "llvm/Support/MathExtras.h"
 #include "llvm/Support/Compiler.h"
 #include "llvm/ADT/SmallVector.h"
@@ -131,7 +132,7 @@
     Value *ConvertUsesOfLoadToScalar(LoadInst *LI, AllocaInst *NewAI, 
                                      uint64_t Offset);
     Value *ConvertScalar_InsertValue(Value *StoredVal, Value *ExistingVal,
-                                     uint64_t Offset, Instruction *InsertPt);
+                                     uint64_t Offset, IRBuilder<> &Builder);
     static Instruction *isOnlyCopiedFromConstantGlobal(AllocationInst *AI);
   };
 }
@@ -1326,9 +1327,12 @@
 
     if (StoreInst *SI = dyn_cast<StoreInst>(User)) {
       assert(SI->getOperand(0) != Ptr && "Consistency error!");
-      Value *Old = new LoadInst(NewAI, NewAI->getName()+".in", SI);
-      Value *New = ConvertScalar_InsertValue(SI->getOperand(0), Old, Offset,SI);
-      new StoreInst(New, NewAI, SI);
+      
+      IRBuilder<> Builder(SI->getParent(), SI);
+      Value *Old = Builder.CreateLoad(NewAI, (NewAI->getName()+".in").c_str());
+      Value *New = ConvertScalar_InsertValue(SI->getOperand(0), Old, Offset,
+                                             Builder);
+      Builder.CreateStore(New, NewAI);
       SI->eraseFromParent();
       continue;
     }
@@ -1364,10 +1368,12 @@
         for (unsigned i = 1; i != NumBytes; ++i)
           APVal |= APVal << 8;
       
-      Value *Old = new LoadInst(NewAI, NewAI->getName()+".in", MSI);
+      IRBuilder<> Builder(MSI->getParent(), MSI);
+      
+      Value *Old = Builder.CreateLoad(NewAI, (NewAI->getName()+".in").c_str());
       Value *New = ConvertScalar_InsertValue(ConstantInt::get(APVal), Old,
-                                             Offset, MSI);
-      new StoreInst(New, NewAI, MSI);
+                                             Offset, Builder);
+      Builder.CreateStore(New, NewAI);
       MSI->eraseFromParent();
       continue;
     }
@@ -1477,7 +1483,7 @@
 /// Offset is an offset from the original alloca, in bits that need to be
 /// shifted to the right.
 Value *SROA::ConvertScalar_InsertValue(Value *SV, Value *Old,
-                                       uint64_t Offset, Instruction *IP) {
+                                       uint64_t Offset, IRBuilder<> &Builder) {
 
   // Convert the stored type to the actual type, shift it left to insert
   // then 'or' into place.
@@ -1487,17 +1493,17 @@
     // If the result alloca is a vector type, this is either an element
     // access or a bitcast to another vector type.
     if (isa<VectorType>(SV->getType())) {
-      SV = new BitCastInst(SV, AllocaType, SV->getName(), IP);
+      SV = Builder.CreateBitCast(SV, AllocaType, "tmp");
     } else {
       // Must be an element insertion.
       unsigned Elt = Offset/TD->getTypePaddedSizeInBits(VTy->getElementType());
       
       if (SV->getType() != VTy->getElementType())
-        SV = new BitCastInst(SV, VTy->getElementType(), "tmp", IP);
+        SV = Builder.CreateBitCast(SV, VTy->getElementType(), "tmp");
       
-      SV = InsertElementInst::Create(Old, SV,
-                                     ConstantInt::get(Type::Int32Ty, Elt),
-                                     "tmp", IP);
+      SV = Builder.CreateInsertElement(Old, SV, 
+                                       ConstantInt::get(Type::Int32Ty, Elt), 
+                                       "tmp");
     }
     return SV;
   }
@@ -1506,9 +1512,10 @@
   if (const StructType *ST = dyn_cast<StructType>(SV->getType())) {
     const StructLayout &Layout = *TD->getStructLayout(ST);
     for (unsigned i = 0, e = ST->getNumElements(); i != e; ++i) {
-      Value *Elt = ExtractValueInst::Create(SV, i, "tmp", IP);
+      Value *Elt = Builder.CreateExtractValue(SV, i, "tmp");
       Old = ConvertScalar_InsertValue(Elt, Old, 
-                                      Offset+Layout.getElementOffset(i), IP);
+                                      Offset+Layout.getElementOffset(i),
+                                      Builder);
     }
     return Old;
   }
@@ -1516,8 +1523,8 @@
   if (const ArrayType *AT = dyn_cast<ArrayType>(SV->getType())) {
     uint64_t EltSize = TD->getTypePaddedSizeInBits(AT->getElementType());
     for (unsigned i = 0, e = AT->getNumElements(); i != e; ++i) {
-      Value *Elt = ExtractValueInst::Create(SV, i, "tmp", IP);
-      Old = ConvertScalar_InsertValue(Elt, Old, Offset+i*EltSize, IP);
+      Value *Elt = Builder.CreateExtractValue(SV, i, "tmp");
+      Old = ConvertScalar_InsertValue(Elt, Old, Offset+i*EltSize, Builder);
     }
     return Old;
   }
@@ -1529,19 +1536,19 @@
   unsigned SrcStoreWidth = TD->getTypeStoreSizeInBits(SV->getType());
   unsigned DestStoreWidth = TD->getTypeStoreSizeInBits(AllocaType);
   if (SV->getType()->isFloatingPoint() || isa<VectorType>(SV->getType()))
-    SV = new BitCastInst(SV, IntegerType::get(SrcWidth), SV->getName(), IP);
+    SV = Builder.CreateBitCast(SV, IntegerType::get(SrcWidth), "tmp");
   else if (isa<PointerType>(SV->getType()))
-    SV = new PtrToIntInst(SV, TD->getIntPtrType(), SV->getName(), IP);
+    SV = Builder.CreatePtrToInt(SV, TD->getIntPtrType(), "tmp");
 
   // Zero extend or truncate the value if needed.
   if (SV->getType() != AllocaType) {
     if (SV->getType()->getPrimitiveSizeInBits() <
              AllocaType->getPrimitiveSizeInBits())
-      SV = new ZExtInst(SV, AllocaType, SV->getName(), IP);
+      SV = Builder.CreateZExt(SV, AllocaType, "tmp");
     else {
       // Truncation may be needed if storing more than the alloca can hold
       // (undefined behavior).
-      SV = new TruncInst(SV, AllocaType, SV->getName(), IP);
+      SV = Builder.CreateTrunc(SV, AllocaType, "tmp");
       SrcWidth = DestWidth;
       SrcStoreWidth = DestStoreWidth;
     }
@@ -1564,14 +1571,10 @@
   // only some bits in the structure are set.
   APInt Mask(APInt::getLowBitsSet(DestWidth, SrcWidth));
   if (ShAmt > 0 && (unsigned)ShAmt < DestWidth) {
-    SV = BinaryOperator::CreateShl(SV,
-                                   ConstantInt::get(SV->getType(), ShAmt),
-                                   SV->getName(), IP);
+    SV = Builder.CreateShl(SV, ConstantInt::get(SV->getType(), ShAmt), "tmp");
     Mask <<= ShAmt;
   } else if (ShAmt < 0 && (unsigned)-ShAmt < DestWidth) {
-    SV = BinaryOperator::CreateLShr(SV,
-                                    ConstantInt::get(SV->getType(), -ShAmt),
-                                    SV->getName(), IP);
+    SV = Builder.CreateLShr(SV, ConstantInt::get(SV->getType(), -ShAmt), "tmp");
     Mask = Mask.lshr(-ShAmt);
   }
 
@@ -1579,9 +1582,8 @@
   // in the new bits.
   if (SrcWidth != DestWidth) {
     assert(DestWidth > SrcWidth);
-    Old = BinaryOperator::CreateAnd(Old, ConstantInt::get(~Mask),
-                                    Old->getName()+".mask", IP);
-    SV = BinaryOperator::CreateOr(Old, SV, SV->getName()+".ins", IP);
+    Old = Builder.CreateAnd(Old, ConstantInt::get(~Mask), "mask");
+    SV = Builder.CreateOr(Old, SV, "ins");
   }
   return SV;
 }





More information about the llvm-commits mailing list