[cfe-commits] r43310 - in /cfe/trunk/CodeGen: CodeGenTypes.cpp CodeGenTypes.h

Devang Patel dpatel at apple.com
Wed Oct 24 13:38:06 PDT 2007


Author: dpatel
Date: Wed Oct 24 15:38:06 2007
New Revision: 43310

URL: http://llvm.org/viewvc/llvm-project?rev=43310&view=rev
Log:
Move RecordOrganizer into CodeGenTypes.cpp

Modified:
    cfe/trunk/CodeGen/CodeGenTypes.cpp
    cfe/trunk/CodeGen/CodeGenTypes.h

Modified: cfe/trunk/CodeGen/CodeGenTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/CodeGenTypes.cpp?rev=43310&r1=43309&r2=43310&view=diff

==============================================================================
--- cfe/trunk/CodeGen/CodeGenTypes.cpp (original)
+++ cfe/trunk/CodeGen/CodeGenTypes.cpp Wed Oct 24 15:38:06 2007
@@ -20,6 +20,41 @@
 using namespace clang;
 using namespace CodeGen;
 
+namespace {
+  /// RecordOrganizer - This helper class, used by RecordLayoutInfo, layouts 
+  /// structs and unions. It manages transient information used during layout.
+  /// FIXME : At the moment assume 
+  ///    - one to one mapping between AST FieldDecls and 
+  ///      llvm::StructType elements.
+  ///    - Ignore bit fields
+  ///    - Ignore field aligments
+  ///    - Ignore packed structs
+  class RecordOrganizer {
+  public:
+    RecordOrganizer() : STy(NULL) {}
+    
+    /// addField - Add new field.
+    void addField(const FieldDecl *FD);
+
+    /// layoutFields - Do the actual work and lay out all fields. Create
+    /// corresponding llvm struct type.  This should be invoked only after
+    /// all fields are added.
+    void layoutFields(CodeGenTypes &CGT);
+
+    /// getLLVMType - Return associated llvm struct type. This may be NULL
+    /// if fields are not laid out.
+    llvm::Type *getLLVMType() const {
+      return STy;
+    }
+
+    /// Clear private data so that this object can be reused.
+    void clear();
+  private:
+    llvm::Type *STy;
+    llvm::SmallVector<const FieldDecl *, 8> FieldDecls;
+  };
+}
+
 CodeGenTypes::CodeGenTypes(ASTContext &Ctx, llvm::Module& M)
   : Context(Ctx), Target(Ctx.Target), TheModule(M) {
 }
@@ -188,7 +223,7 @@
       RO.layoutFields(*this);
 
       // Get llvm::StructType.
-      RecordLayoutInfo *RLI = new RecordLayoutInfo(&RO);
+      RecordLayoutInfo *RLI = new RecordLayoutInfo(RO.getLLVMType());
       ResultType = RLI->getLLVMType();
       RecordLayouts[ResultType] = RLI;
 
@@ -275,16 +310,6 @@
   return I->second;
 }
 
-/// RecordLayoutInfo - Construct record layout info object using layout 
-/// organized by record organizer.
-RecordLayoutInfo::RecordLayoutInfo(RecordOrganizer *RO) {
-  STy = RO->getLLVMType();
-  assert (STy && "Record layout is incomplete to determine llvm::Type");
-  // FIXME : Collect info about fields that requires adjustments 
-  // (i.e. fields that do not directly map to llvm struct fields.)
-}
-
-
 /// addField - Add new field.
 void RecordOrganizer::addField(const FieldDecl *FD) {
   assert (!STy && "Record fields are already laid out");

Modified: cfe/trunk/CodeGen/CodeGenTypes.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/CodeGenTypes.h?rev=43310&r1=43309&r2=43310&view=diff

==============================================================================
--- cfe/trunk/CodeGen/CodeGenTypes.h (original)
+++ cfe/trunk/CodeGen/CodeGenTypes.h Wed Oct 24 15:38:06 2007
@@ -36,45 +36,15 @@
 namespace CodeGen {
   class CodeGenTypes;
 
-  /// RecordOrganizer - This helper class, used by RecordLayoutInfo, layouts 
-  /// structs and unions. It manages transient information used during layout.
-  /// FIXME : At the moment assume 
-  ///    - one to one mapping between AST FieldDecls and 
-  ///      llvm::StructType elements.
-  ///    - Ignore bit fields
-  ///    - Ignore field aligments
-  ///    - Ignore packed structs
-  class RecordOrganizer {
-  public:
-    RecordOrganizer() : STy(NULL) {}
-    
-    /// addField - Add new field.
-    void addField(const FieldDecl *FD);
-
-    /// layoutFields - Do the actual work and lay out all fields. Create
-    /// corresponding llvm struct type.  This should be invoked only after
-    /// all fields are added.
-    void layoutFields(CodeGenTypes &CGT);
-
-    /// getLLVMType - Return associated llvm struct type. This may be NULL
-    /// if fields are not laid out.
-    llvm::Type *getLLVMType() const {
-      return STy;
-    }
-
-    /// Clear private data so that this object can be reused.
-    void clear();
-  private:
-    llvm::Type *STy;
-    llvm::SmallVector<const FieldDecl *, 8> FieldDecls;
-  };
-
   /// RecordLayoutInfo - This class handles struct and union layout info while 
   /// lowering AST types to LLVM types.
   class RecordLayoutInfo {
     RecordLayoutInfo(); // DO NOT IMPLEMENT
   public:
-    RecordLayoutInfo(RecordOrganizer *RO);
+    RecordLayoutInfo(llvm::Type *T) : STy(T) {
+      // FIXME : Collect info about fields that requires adjustments 
+      // (i.e. fields that do not directly map to llvm struct fields.)
+    }
 
     /// getLLVMType - Return llvm type associated with this record.
     llvm::Type *getLLVMType() const {





More information about the cfe-commits mailing list