]> granicus.if.org Git - clang/commitdiff
Separate access field number is not required.
authorDevang Patel <dpatel@apple.com>
Tue, 11 Dec 2007 01:23:33 +0000 (01:23 +0000)
committerDevang Patel <dpatel@apple.com>
Tue, 11 Dec 2007 01:23:33 +0000 (01:23 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@44833 91177308-0d34-0410-b5e6-96231b3b80d8

CodeGen/CodeGenTypes.cpp
CodeGen/CodeGenTypes.h

index 21046e9c70cb4470efd898a68d489d1ad734f281..b792d6cfa6564d9531b9ffd711e94bfb3b554910 100644 (file)
@@ -373,13 +373,12 @@ unsigned CodeGenTypes::getLLVMFieldNo(const FieldDecl *FD) {
 
 /// addFieldInfo - Assign field number to field FD.
 void CodeGenTypes::addFieldInfo(const FieldDecl *FD, unsigned No,
-                                unsigned Begin, unsigned End,
-                                unsigned AccessNo) {
+                                unsigned Begin, unsigned End) {
   if (Begin == 0 && End == 0)
     FieldInfo[FD] = No;
   else
     // FD is a bit field
-    BitFields.insert(std::make_pair(FD, BitFieldInfo(No, Begin, End, AccessNo)));
+    BitFields.insert(std::make_pair(FD, BitFieldInfo(No, Begin, End)));
 }
 
 /// getCGRecordLayout - Return record layout info for the given llvm::Type.
@@ -457,7 +456,7 @@ void RecordOrganizer::layoutStructFields(const ASTRecordLayout &RL) {
                 unsigned FieldBegin = Cursor - (O % TySize);
                 unsigned FieldEnd = TySize - (FieldBegin + BitFieldSize);
                 Cursor += BitFieldSize;
-                CGT.addFieldInfo(FD, FieldNo, FieldBegin, FieldEnd, i);
+                CGT.addFieldInfo(FD, i, FieldBegin, FieldEnd);
               }
             }
             assert(FoundPrevField && 
@@ -467,8 +466,7 @@ void RecordOrganizer::layoutStructFields(const ASTRecordLayout &RL) {
       } else  if (ExtraBits >= BitFieldSize) {
         // Reuse existing llvm field
         ExtraBits = ExtraBits  - BitFieldSize;
-        CGT.addFieldInfo(FD, FieldNo, Cursor - CurrentFieldStart,
-                         ExtraBits, FieldNo);
+        CGT.addFieldInfo(FD, FieldNo, Cursor - CurrentFieldStart, ExtraBits);
         Cursor = Cursor + BitFieldSize;
         ++FieldNo;
       } else {
@@ -534,7 +532,7 @@ void RecordOrganizer::addLLVMField(const llvm::Type *Ty, uint64_t Size,
   Cursor += Size;
   LLVMFields.push_back(Ty);
   if (FD)
-    CGT.addFieldInfo(FD, FieldNo, Begin, End, FieldNo);
+    CGT.addFieldInfo(FD, FieldNo, Begin, End);
   ++FieldNo;
 }
 
@@ -546,7 +544,7 @@ void RecordOrganizer::layoutUnionFields() {
   unsigned PrimaryEltNo = 0;
   std::pair<uint64_t, unsigned> PrimaryElt =
     CGT.getContext().getTypeInfo(FieldDecls[0]->getType(), SourceLocation());
-  CGT.addFieldInfo(FieldDecls[0], 0, 0, 0, 0);
+  CGT.addFieldInfo(FieldDecls[0], 0, 0, 0);
 
   unsigned Size = FieldDecls.size();
   for(unsigned i = 1; i != Size; ++i) {
@@ -564,7 +562,7 @@ void RecordOrganizer::layoutUnionFields() {
     }
 
     // In union, each field gets first slot.
-    CGT.addFieldInfo(FD, 0, 0, 0, 0);
+    CGT.addFieldInfo(FD, 0, 0, 0);
   }
 
   std::vector<const llvm::Type*> Fields;
index a5b540188f4d6c7fc9a4028bf250c093e10bb353..2a06d137dc59d250c1ed81fc51f8df39346fc263 100644 (file)
@@ -78,19 +78,18 @@ class CodeGenTypes {
 
   class BitFieldInfo {
   public:
-    explicit BitFieldInfo(unsigned N, unsigned B, unsigned E, unsigned A)
-      : No(N), Begin(B), End(E), AccessFieldNo(A) {}
+    explicit BitFieldInfo(unsigned N, unsigned B, unsigned E)
+      : No(N), Begin(B), End(E) {}
   private:
-    // No - Field number in llvm struct.
+    // No -  llvm struct field number that is used to
+    // access this field. It may be not same as struct field number. 
+    // For example,
+    //   struct S { char a; short b:2; }
+    // Here field 'b' is second field however it is accessed as
+    // 9th and 10th bitfield of first field whose type is short.
     unsigned No;
     unsigned Begin;
     unsigned End;
-    // AccessFieldNo - llvm struct field number that is used to
-    // access this field. It may be not same as No. For example,
-    // struct S { char a; short b:2; }
-    // Here field 'b' is second field however it is accessed as
-    // 9th and 10th bitfield of first field whose type is short.
-    unsigned AccessFieldNo;
   };
   llvm::DenseMap<const FieldDecl *, BitFieldInfo> BitFields;
 
@@ -132,7 +131,7 @@ public:
 
   /// addFieldInfo - Assign field number to field FD.
   void addFieldInfo(const FieldDecl *FD, unsigned No, unsigned Begin, 
-                    unsigned End, unsigned AccessNo);
+                    unsigned End);
 };
 
 }  // end namespace CodeGen