Specify S registers as D registers' sub-registers.
[oota-llvm.git] / lib / Target / TargetData.cpp
index bafe8e32f75e7732b31e5003a721711da8f9968f..10ee707aea4df205779d6348f9da880ff623e57b 100644 (file)
@@ -184,14 +184,8 @@ void TargetData::init(const std::string &TargetDescription) {
   
   while (!temp.empty()) {
     std::string token = getToken(temp, "-");
-    
     std::string arg0 = getToken(token, ":");
     const char *p = arg0.c_str();
-    AlignTypeEnum align_type;
-    uint32_t size;
-    unsigned char abi_align;
-    unsigned char pref_align;
-
     switch(*p) {
     case 'E':
       LittleEndian = false;
@@ -210,12 +204,12 @@ void TargetData::init(const std::string &TargetDescription) {
     case 'v':
     case 'f':
     case 'a': {
-      align_type = (*p == 'i' ? INTEGER_ALIGN :
-                    (*p == 'f' ? FLOAT_ALIGN :
-                     (*p == 'v' ? VECTOR_ALIGN : AGGREGATE_ALIGN)));
-      size = (uint32_t) atoi(++p);
-      abi_align = atoi(getToken(token, ":").c_str()) / 8;
-      pref_align = atoi(getToken(token, ":").c_str()) / 8;
+      AlignTypeEnum align_type = 
+        (*p == 'i' ? INTEGER_ALIGN : (*p == 'f' ? FLOAT_ALIGN :
+           (*p == 'v' ? VECTOR_ALIGN : AGGREGATE_ALIGN)));
+      uint32_t size = (uint32_t) atoi(++p);
+      unsigned char abi_align = atoi(getToken(token, ":").c_str()) / 8;
+      unsigned char pref_align = atoi(getToken(token, ":").c_str()) / 8;
       if (pref_align == 0)
         pref_align = abi_align;
       setAlignment(align_type, abi_align, pref_align, size);
@@ -348,7 +342,7 @@ const StructLayout *TargetData::getStructLayout(const StructType *Ty) const {
 
   // Otherwise, create the struct layout.  Because it is variable length, we 
   // malloc it, then use placement new.
-  unsigned NumElts = Ty->getNumElements();
+  int NumElts = Ty->getNumElements();
   StructLayout *L =
     (StructLayout *)malloc(sizeof(StructLayout)+(NumElts-1)*sizeof(uint64_t));
   
@@ -406,7 +400,7 @@ uint64_t TargetData::getTypeSize(const Type *Ty) const {
     unsigned char Alignment;
     Size = getTypeSize(ATy->getElementType());
     Alignment = getABITypeAlignment(ATy->getElementType());
-    unsigned AlignedSize = (Size + Alignment - 1)/Alignment*Alignment;
+    uint64_t AlignedSize = (Size + Alignment - 1)/Alignment*Alignment;
     return AlignedSize*ATy->getNumElements();
   }
   case Type::StructTyID: {
@@ -547,7 +541,8 @@ uint64_t TargetData::getIndexedOffset(const Type *ptrTy, Value* const* Indices,
     TI = gep_type_begin(ptrTy, Indices, Indices+NumIndices);
   for (unsigned CurIDX = 0; CurIDX != NumIndices; ++CurIDX, ++TI) {
     if (const StructType *STy = dyn_cast<StructType>(*TI)) {
-      assert(Indices[CurIDX]->getType() == Type::Int32Ty &&"Illegal struct idx");
+      assert(Indices[CurIDX]->getType() == Type::Int32Ty &&
+             "Illegal struct idx");
       unsigned FieldNo = cast<ConstantInt>(Indices[CurIDX])->getZExtValue();
 
       // Get structure layout information...