[llvm-commits] [dragonegg] r166672 - in /dragonegg/trunk/src: ConstantConversion.cpp Convert.cpp TypeConversion.cpp

Duncan Sands baldrick at free.fr
Thu Oct 25 02:12:38 PDT 2012


Author: baldrick
Date: Thu Oct 25 04:12:37 2012
New Revision: 166672

URL: http://llvm.org/viewvc/llvm-project?rev=166672&view=rev
Log:
Clean up after Micah's address space changes.  Note that this assumes that
getIntPtrType will be fixed to return a vector of integers when passed a
vector of pointers.

Modified:
    dragonegg/trunk/src/ConstantConversion.cpp
    dragonegg/trunk/src/Convert.cpp
    dragonegg/trunk/src/TypeConversion.cpp

Modified: dragonegg/trunk/src/ConstantConversion.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/ConstantConversion.cpp?rev=166672&r1=166671&r2=166672&view=diff
==============================================================================
--- dragonegg/trunk/src/ConstantConversion.cpp (original)
+++ dragonegg/trunk/src/ConstantConversion.cpp Thu Oct 25 04:12:37 2012
@@ -559,16 +559,16 @@
     unsigned NumElts = TYPE_VECTOR_SUBPARTS(type);
     unsigned Stride = GET_MODE_BITSIZE(TYPE_MODE(elt_type));
     SmallVector<Constant*, 16> Vals(NumElts);
-    // FIXME: what is the address space here?
-    unsigned AS = 0;
-    IntegerType *IntPtrTy = getDataLayout().getIntPtrType(Context, AS);
     for (unsigned i = 0; i != NumElts; ++i) {
       Vals[i] = ExtractRegisterFromConstantImpl(C, elt_type,
                                                 StartingBit+i*Stride, Folder);
       // LLVM does not support vectors of pointers, so turn any pointers into
       // integers.
-      if (isa<PointerType>(Vals[i]->getType()))
+      if (isa<PointerType>(Vals[i]->getType())) {
+        IntegerType *IntPtrTy =
+          getDataLayout().getIntPtrType(Vals[i]->getType());
         Vals[i] = Folder.CreatePtrToInt(Vals[i], IntPtrTy);
+      }
     }
     return ConstantVector::get(Vals);
   }

Modified: dragonegg/trunk/src/Convert.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/Convert.cpp?rev=166672&r1=166671&r2=166672&view=diff
==============================================================================
--- dragonegg/trunk/src/Convert.cpp (original)
+++ dragonegg/trunk/src/Convert.cpp Thu Oct 25 04:12:37 2012
@@ -840,10 +840,8 @@
         // bytes, but only 10 are copied.  If the object is really a union
         // we might need the other bytes.  We must also be careful to use
         // the smaller alignment.
-        // FIXME: Where do we get the address space?
-        unsigned AS = 0;
         Type *SBP = Type::getInt8PtrTy(Context);
-        Type *IntPtr = getDataLayout().getIntPtrType(Context, AS);
+        Type *IntPtr = getDataLayout().getIntPtrType(Context, 0);
         Value *Ops[5] = {
           Builder.CreateCast(Instruction::BitCast, Loc, SBP),
           Builder.CreateCast(Instruction::BitCast, AI, SBP),
@@ -1357,7 +1355,7 @@
               Builder.CreateBitCast(ResultLV.Ptr, Type::getInt8PtrTy(Context));
             ResultLV.Ptr =
               Builder.CreateGEP(ResultLV.Ptr,
-                                ConstantInt::get(TD.getIntPtrType(ResultLV.Ptr->getType()),
+                                ConstantInt::get(TD.getIntPtrType(Context, 0),
                                                  ReturnOffset),
                                 flag_verbose_asm ? "rtvl" : "");
             ResultLV.setAlignment(MinAlign(ResultLV.getAlignment(), ReturnOffset));
@@ -1859,16 +1857,15 @@
   if (OrigEltTy->isIntegerTy())
     // Already an integer/vector of integer - nothing to do.
     return V;
-  unsigned VecElts = isa<VectorType>(OrigTy) ?
-    cast<VectorType>(OrigTy)->getNumElements() : 0;
   if (OrigEltTy->isPointerTy()) {
     // A pointer/vector of pointer - form a (vector of) pointer sized integers.
-    Type *NewEltTy = TD.getIntPtrType(OrigEltTy);
-    Type *NewTy = VecElts ? VectorType::get(NewEltTy, VecElts) : NewEltTy;
+    Type *NewTy = TD.getIntPtrType(OrigTy);
     return Builder.CreatePtrToInt(V, NewTy);
   }
   // Everything else.
   assert(OrigTy->isFPOrFPVectorTy() && "Expected a floating point type!");
+  unsigned VecElts = isa<VectorType>(OrigTy) ?
+    cast<VectorType>(OrigTy)->getNumElements() : 0;
   unsigned BitWidth = OrigEltTy->getPrimitiveSizeInBits();
   Type *NewEltTy = IntegerType::get(Context, BitWidth);
   Type *NewTy = VecElts ? VectorType::get(NewEltTy, VecElts) : NewEltTy;
@@ -3480,8 +3477,9 @@
   if (Client.Offset) {
     Ptr = Builder.CreateBitCast(Ptr, Type::getInt8PtrTy(Context));
     Ptr = Builder.CreateGEP(Ptr,
-                    ConstantInt::get(TD.getIntPtrType(Ptr->getType()), Client.Offset),
-                    flag_verbose_asm ? "ro" : "");
+                            ConstantInt::get(TD.getIntPtrType(Ptr->getType()),
+                                             Client.Offset),
+                            flag_verbose_asm ? "ro" : "");
     Align = MinAlign(Align, Client.Offset);
     MaxStoreSize -= Client.Offset;
   }
@@ -5677,9 +5675,7 @@
   if (!validate_gimple_arglist(stmt, INTEGER_TYPE, POINTER_TYPE, VOID_TYPE))
     return false;
 
-  // FIXME: Where do I get the address space from here?
-  unsigned AS = 0;
-  Type *IntPtr = TD.getIntPtrType(Context, AS);
+  Type *IntPtr = TD.getIntPtrType(Context, 0);
   Value *Offset = EmitMemory(gimple_call_arg(stmt, 0));
   Value *Handler = EmitMemory(gimple_call_arg(stmt, 1));
 
@@ -6604,15 +6600,14 @@
 
   // Convert the elements.
   SmallVector<Constant*, 16> Elts;
-  // FIXME: Where do I get the address space from?
-  unsigned AS = 0;
-  IntegerType *IntTy = getDataLayout().getIntPtrType(Context, AS);
   for (tree elt = TREE_VECTOR_CST_ELTS(reg); elt; elt = TREE_CHAIN(elt)) {
     Constant *Elt = EmitRegisterConstant(TREE_VALUE(elt));
     // LLVM does not support vectors of pointers, so turn any pointers into
     // integers.
-    if (isa<PointerType>(Elt->getType()))
+    if (isa<PointerType>(Elt->getType())) {
+      IntegerType *IntTy = getDataLayout().getIntPtrType(Elt->getType());
       Elt = Builder.getFolder().CreatePtrToInt(Elt, IntTy);
+    }
     Elts.push_back(Elt);
   }
 

Modified: dragonegg/trunk/src/TypeConversion.cpp
URL: http://llvm.org/viewvc/llvm-project/dragonegg/trunk/src/TypeConversion.cpp?rev=166672&r1=166671&r2=166672&view=diff
==============================================================================
--- dragonegg/trunk/src/TypeConversion.cpp (original)
+++ dragonegg/trunk/src/TypeConversion.cpp Thu Oct 25 04:12:37 2012
@@ -456,11 +456,9 @@
     return StructType::get(EltTy, EltTy, NULL);
   }
 
-  case OFFSET_TYPE: {
-    // FIXME: Need to get the Address space here.
-    unsigned AS = 0;
-    return getDataLayout().getIntPtrType(Context, AS);
-  }
+  case OFFSET_TYPE:
+    return getDataLayout().getIntPtrType(Context, TYPE_ADDR_SPACE(type));
+
   case POINTER_TYPE:
   case REFERENCE_TYPE:
     // void* -> byte*
@@ -487,10 +485,10 @@
   case VECTOR_TYPE: {
     // LLVM does not support vectors of pointers, so turn any pointers into
     // integers. <-- This isn't true since at least 3.1 as far as I know - MicahV
-    // FIXME: Need to get the Address space here.
-    unsigned AS = 0;
+    // FIXME     ^-- Yes, but does it work reliably? - Duncan
     Type *EltTy = isa<ACCESS_TYPE>(TREE_TYPE(type)) ?
-      getDataLayout().getIntPtrType(Context, AS) : getRegType(TREE_TYPE(type));
+      getDataLayout().getIntPtrType(Context, TYPE_ADDR_SPACE(TREE_TYPE(type))) :
+      getRegType(TREE_TYPE(type));
     return VectorType::get(EltTy, TYPE_VECTOR_SUBPARTS(type));
   }
 
@@ -1423,8 +1421,7 @@
     // which are really just integer offsets.  Return the appropriate integer
     // type directly.
     // Caching the type conversion is not worth it.
-    // FIXME: Need to get the Address space here.
-    unsigned AS = 0;
+    unsigned AS = TYPE_ADDR_SPACE(type);
     return CheckTypeConversion(type, getDataLayout().getIntPtrType(Context, AS));
   }
   case REAL_TYPE:
@@ -1463,13 +1460,11 @@
     Type *Ty;
     // LLVM does not support vectors of pointers, so turn any pointers into
     // integers.
-    if (isa<ACCESS_TYPE>(TREE_TYPE(type))) {
-      // FIXME: Need to get the Address space here.
-      unsigned AS = 0;
-      Ty = getDataLayout().getIntPtrType(Context, AS);
-    } else {
+    if (isa<ACCESS_TYPE>(TREE_TYPE(type)))
+      Ty = getDataLayout().getIntPtrType(Context,
+                                         TYPE_ADDR_SPACE(TREE_TYPE(type)));
+    else
       Ty = ConvertTypeNonRecursive(main_type(type));
-    }
     Ty = VectorType::get(Ty, TYPE_VECTOR_SUBPARTS(type));
     return RememberTypeConversion(type, Ty);
   }





More information about the llvm-commits mailing list