[llvm-commits] [llvm-gcc-4.2] r48643 - in /llvm-gcc-4.2/trunk/gcc: llvm-backend.cpp llvm-convert.cpp llvm-types.cpp

Duncan Sands baldrick at free.fr
Fri Mar 21 02:57:16 PDT 2008


Author: baldrick
Date: Fri Mar 21 04:57:14 2008
New Revision: 48643

URL: http://llvm.org/viewvc/llvm-project?rev=48643&view=rev
Log:
Simplify using new builder methods.

Modified:
    llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
    llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
    llvm-gcc-4.2/trunk/gcc/llvm-types.cpp

Modified: llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp?rev=48643&r1=48642&r2=48643&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-backend.cpp Fri Mar 21 04:57:14 2008
@@ -1215,9 +1215,9 @@
 
     // If we have "extern void foo", make the global have type {} instead of
     // type void.
-    if (Ty == Type::VoidTy) 
-      Ty = StructType::get(std::vector<const Type*>(), false);
-    
+    if (Ty == Type::VoidTy)
+      Ty = StructType::get(NULL);
+
     if (Name[0] == 0) {   // Global has no name.
       GV = new GlobalVariable(Ty, false, GlobalValue::ExternalLinkage, 0,
                               "", TheModule);

Modified: llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp?rev=48643&r1=48642&r2=48643&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-convert.cpp Fri Mar 21 04:57:14 2008
@@ -506,12 +506,7 @@
         Loc = Builder.CreateBitCast(Loc, PointerType::getUnqual(StructTy), 
                                     "tmp");
 
-      Value *Idxs[] = {
-        Constant::getNullValue(Type::Int32Ty),
-        ConstantInt::get(Type::Int32Ty, FieldNo)
-      };
-
-      Loc = Builder.CreateGEP(Loc, Idxs, Idxs + 2, "tmp");
+      Loc = Builder.CreateStructGEP(Loc, FieldNo, "tmp");
       LocStack.push_back(Loc);    
     }
     void ExitField() {
@@ -1243,14 +1238,11 @@
     S->setAlignment(Alignment);
   } else if (const StructType *STy = dyn_cast<StructType>(ElTy)) {
     const StructLayout *SL = getTargetData().getStructLayout(STy);
-    Constant *Zero = ConstantInt::get(Type::Int32Ty, 0);
     for (unsigned i = 0, e = STy->getNumElements(); i != e; ++i) {
       if (gccType && isPaddingElement(gccType, i))
         continue;
-      Constant *Idx = ConstantInt::get(Type::Int32Ty, i);
-      Value *Idxs[2] = { Zero, Idx };
-      Value *DElPtr = Builder.CreateGEP(DestLoc.Ptr, Idxs, Idxs + 2, "tmp");
-      Value *SElPtr = Builder.CreateGEP(SrcLoc.Ptr, Idxs, Idxs + 2, "tmp");
+      Value *DElPtr = Builder.CreateStructGEP(DestLoc.Ptr, i, "tmp");
+      Value *SElPtr = Builder.CreateStructGEP(SrcLoc.Ptr, i, "tmp");
       unsigned Align = MinAlign(Alignment, SL->getElementOffset(i));
       CopyAggregate(MemRef(DElPtr, Align, DestLoc.Volatile),
                     MemRef(SElPtr, Align, SrcLoc.Volatile),
@@ -1258,13 +1250,10 @@
     }
   } else {
     const ArrayType *ATy = cast<ArrayType>(ElTy);
-    Constant *Zero = ConstantInt::get(Type::Int32Ty, 0);
     unsigned EltSize = getTargetData().getABITypeSize(ATy->getElementType());
     for (unsigned i = 0, e = ATy->getNumElements(); i != e; ++i) {
-      Constant *Idx = ConstantInt::get(Type::Int32Ty, i);
-      Value *Idxs[2] = { Zero, Idx };
-      Value *DElPtr = Builder.CreateGEP(DestLoc.Ptr, Idxs, Idxs + 2, "tmp");
-      Value *SElPtr = Builder.CreateGEP(SrcLoc.Ptr, Idxs, Idxs + 2, "tmp");
+      Value *DElPtr = Builder.CreateStructGEP(DestLoc.Ptr, i, "tmp");
+      Value *SElPtr = Builder.CreateStructGEP(SrcLoc.Ptr, i, "tmp");
       unsigned Align = MinAlign(Alignment, i * EltSize);
       CopyAggregate(MemRef(DElPtr, Align, DestLoc.Volatile),
                     MemRef(SElPtr, Align, SrcLoc.Volatile),
@@ -1333,22 +1322,16 @@
     St->setAlignment(DestLoc.Alignment);
   } else if (const StructType *STy = dyn_cast<StructType>(ElTy)) {
     const StructLayout *SL = getTargetData().getStructLayout(STy);
-    Constant *Zero = ConstantInt::get(Type::Int32Ty, 0);
     for (unsigned i = 0, e = STy->getNumElements(); i != e; ++i) {
-      Constant *Idx = ConstantInt::get(Type::Int32Ty, i);
-      Value *Idxs[2] = { Zero, Idx };
-      Value *Ptr = Builder.CreateGEP(DestLoc.Ptr, Idxs, Idxs + 2, "tmp");
+      Value *Ptr = Builder.CreateStructGEP(DestLoc.Ptr, i, "tmp");
       unsigned Alignment = MinAlign(DestLoc.Alignment, SL->getElementOffset(i));
       ZeroAggregate(MemRef(Ptr, Alignment, DestLoc.Volatile), Builder);
     }
   } else {
     const ArrayType *ATy = cast<ArrayType>(ElTy);
-    Constant *Zero = ConstantInt::get(Type::Int32Ty, 0);
     unsigned EltSize = getTargetData().getABITypeSize(ATy->getElementType());
     for (unsigned i = 0, e = ATy->getNumElements(); i != e; ++i) {
-      Constant *Idx = ConstantInt::get(Type::Int32Ty, i);
-      Value *Idxs[2] = { Zero, Idx };
-      Value *Ptr = Builder.CreateGEP(DestLoc.Ptr, Idxs, Idxs + 2, "tmp");
+      Value *Ptr = Builder.CreateStructGEP(DestLoc.Ptr, i, "tmp");
       unsigned Alignment = MinAlign(DestLoc.Alignment, i * EltSize);
       ZeroAggregate(MemRef(Ptr, Alignment, DestLoc.Volatile), Builder);
     }
@@ -2420,16 +2403,13 @@
     }
 
     void EnterField(unsigned FieldNo, const llvm::Type *StructTy) {
-      Constant *Zero = Constant::getNullValue(Type::Int32Ty);
-      Constant *FIdx = ConstantInt::get(Type::Int32Ty, FieldNo);
       Value *Loc = LocStack.back();
       if (cast<PointerType>(Loc->getType())->getElementType() != StructTy)
         // This always deals with pointer types so BitCast is appropriate
         Loc = Builder.CreateBitCast(Loc, PointerType::getUnqual(StructTy), 
                                     "tmp");
-      
-      Value *Idxs[2] = { Zero, FIdx };
-      LocStack.push_back(Builder.CreateGEP(Loc, Idxs, Idxs + 2, "tmp"));
+
+      LocStack.push_back(Builder.CreateStructGEP(Loc, FieldNo, "tmp"));
     }
     void ExitField() {
       LocStack.pop_back();
@@ -5002,16 +4982,11 @@
 
 void TreeToLLVM::EmitLoadFromComplex(Value *&Real, Value *&Imag,
                                      MemRef SrcComplex) {
-  Value *I0 = ConstantInt::get(Type::Int32Ty, 0);
-  Value *I1 = ConstantInt::get(Type::Int32Ty, 1);
-  Value *Idxs[2] = { I0, I0 };
-
-  Value *RealPtr = Builder.CreateGEP(SrcComplex.Ptr, Idxs, Idxs + 2, "real");
+  Value *RealPtr = Builder.CreateStructGEP(SrcComplex.Ptr, 0, "real");
   Real = Builder.CreateLoad(RealPtr, SrcComplex.Volatile, "real");
   cast<LoadInst>(Real)->setAlignment(SrcComplex.Alignment);
-  
-  Idxs[1] = I1;
-  Value *ImagPtr = Builder.CreateGEP(SrcComplex.Ptr, Idxs, Idxs + 2, "real");
+
+  Value *ImagPtr = Builder.CreateStructGEP(SrcComplex.Ptr, 1, "imag");
   Imag = Builder.CreateLoad(ImagPtr, SrcComplex.Volatile, "imag");
   cast<LoadInst>(Imag)->setAlignment(
     MinAlign(SrcComplex.Alignment, TD.getABITypeSize(Real->getType()))
@@ -5020,17 +4995,13 @@
 
 void TreeToLLVM::EmitStoreToComplex(MemRef DestComplex, Value *Real,
                                     Value *Imag) {
-  Value *I0 = ConstantInt::get(Type::Int32Ty, 0);
-  Value *I1 = ConstantInt::get(Type::Int32Ty, 1);  
-  Value *Idxs[2] = { I0, I0 };
   StoreInst *St;
 
-  Value *RealPtr = Builder.CreateGEP(DestComplex.Ptr, Idxs, Idxs + 2, "real");
+  Value *RealPtr = Builder.CreateStructGEP(DestComplex.Ptr, 0, "real");
   St = Builder.CreateStore(Real, RealPtr, DestComplex.Volatile);
   St->setAlignment(DestComplex.Alignment);
-  
-  Idxs[1] = I1;
-  Value *ImagPtr = Builder.CreateGEP(DestComplex.Ptr, Idxs, Idxs + 2, "real");
+
+  Value *ImagPtr = Builder.CreateStructGEP(DestComplex.Ptr, 1, "imag");
   St = Builder.CreateStore(Imag, ImagPtr, DestComplex.Volatile);
   St->setAlignment(
     MinAlign(DestComplex.Alignment, TD.getABITypeSize(Real->getType()))
@@ -5201,8 +5172,7 @@
   const Type *Ty = ConvertType(TREE_TYPE(exp));
   // If we have "extern void foo", make the global have type {} instead of
   // type void.
-  if (Ty == Type::VoidTy) Ty = StructType::get(std::vector<const Type*>(),
-                                               false);
+  if (Ty == Type::VoidTy) Ty = StructType::get(NULL);
   const PointerType *PTy = PointerType::getUnqual(Ty);
   return BitCastToType(Decl, PTy);
 }
@@ -5337,9 +5307,7 @@
     unsigned int MemberIndex = GetFieldIndex(FieldDecl);
     assert(MemberIndex < StructTy->getNumContainedTypes() &&
            "Field Idx out of range!");
-    Value *Idxs[2] = { Constant::getNullValue(Type::Int32Ty),
-                       ConstantInt::get(Type::Int32Ty, MemberIndex) };
-    FieldPtr = Builder.CreateGEP(StructAddrLV.Ptr, Idxs, Idxs + 2, "tmp");
+    FieldPtr = Builder.CreateStructGEP(StructAddrLV.Ptr, MemberIndex, "tmp");
 
     // Now that we did an offset from the start of the struct, subtract off
     // the offset from BitStart.
@@ -5503,10 +5471,7 @@
 LValue TreeToLLVM::EmitLV_XXXXPART_EXPR(tree exp, unsigned Idx) {
   LValue Ptr = EmitLV(TREE_OPERAND(exp, 0));
   assert(!Ptr.isBitfield() && "BIT_FIELD_REF operands cannot be bitfields!");
-
-  Value *Idxs[2] = { ConstantInt::get(Type::Int32Ty, 0),
-                     ConstantInt::get(Type::Int32Ty, Idx) };
-  return LValue(Builder.CreateGEP(Ptr.Ptr, Idxs, Idxs + 2, "tmp"));
+  return LValue(Builder.CreateStructGEP(Ptr.Ptr, Idx, "tmp"));
 }
 
 LValue TreeToLLVM::EmitLV_VIEW_CONVERT_EXPR(tree exp) {

Modified: llvm-gcc-4.2/trunk/gcc/llvm-types.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm-gcc-4.2/trunk/gcc/llvm-types.cpp?rev=48643&r1=48642&r2=48643&view=diff

==============================================================================
--- llvm-gcc-4.2/trunk/gcc/llvm-types.cpp (original)
+++ llvm-gcc-4.2/trunk/gcc/llvm-types.cpp Fri Mar 21 04:57:14 2008
@@ -762,9 +762,8 @@
              return SET_TYPE_LLVM(type, Type::FP128Ty);
 #else
       // 128-bit long doubles map onto { double, double }.
-      const Type *Ty = Type::DoubleTy;
-      Ty = StructType::get(std::vector<const Type*>(2, Ty), false);
-      return SET_TYPE_LLVM(type, Ty);
+      return SET_TYPE_LLVM(type, StructType::get(Type::DoubleTy, Type::DoubleTy,
+                                                 NULL));
 #endif
     }
     
@@ -772,8 +771,7 @@
     if (const Type *Ty = GET_TYPE_LLVM(type)) return Ty;
     const Type *Ty = ConvertType(TREE_TYPE(type));
     assert(!Ty->isAbstract() && "should use TypeDB.setType()");
-    Ty = StructType::get(std::vector<const Type*>(2, Ty), false);
-    return SET_TYPE_LLVM(type, Ty);
+    return SET_TYPE_LLVM(type, StructType::get(Ty, Ty, NULL));
   }
   case VECTOR_TYPE: {
     if (const Type *Ty = GET_TYPE_LLVM(type)) return Ty;





More information about the llvm-commits mailing list