[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