diff options
Diffstat (limited to 'CodeGen')
-rw-r--r-- | CodeGen/CodeGenModule.cpp | 6 | ||||
-rw-r--r-- | CodeGen/CodeGenModule.h | 4 | ||||
-rw-r--r-- | CodeGen/CodeGenTypes.cpp | 20 | ||||
-rw-r--r-- | CodeGen/CodeGenTypes.h | 5 | ||||
-rw-r--r-- | CodeGen/ModuleBuilder.cpp | 5 |
5 files changed, 12 insertions, 28 deletions
diff --git a/CodeGen/CodeGenModule.cpp b/CodeGen/CodeGenModule.cpp index 8bb4c2e51e..a596c08528 100644 --- a/CodeGen/CodeGenModule.cpp +++ b/CodeGen/CodeGenModule.cpp @@ -24,10 +24,8 @@ using namespace clang; using namespace CodeGen; -CodeGenModule::CodeGenModule(ASTContext &C, llvm::Module &M, - const llvm::TargetData &TD) - : Context(C), TheModule(M), TheTargetData(TD), - Types(C, M, TD), CFConstantStringClassRef(0) {} +CodeGenModule::CodeGenModule(ASTContext &C, llvm::Module &M) + : Context(C), TheModule(M), Types(C, M), CFConstantStringClassRef(0) {} llvm::Constant *CodeGenModule::GetAddrOfGlobalDecl(const ValueDecl *D) { // See if it is already in the map. diff --git a/CodeGen/CodeGenModule.h b/CodeGen/CodeGenModule.h index a044c0d02e..4ca4f8c550 100644 --- a/CodeGen/CodeGenModule.h +++ b/CodeGen/CodeGenModule.h @@ -23,7 +23,6 @@ namespace llvm { class Constant; class Function; class GlobalVariable; - class TargetData; } namespace clang { @@ -40,7 +39,6 @@ namespace CodeGen { class CodeGenModule { ASTContext &Context; llvm::Module &TheModule; - const llvm::TargetData &TheTargetData; CodeGenTypes Types; llvm::Function *MemCpyFn; @@ -51,7 +49,7 @@ class CodeGenModule { std::vector<llvm::Function *> BuiltinFunctions; public: - CodeGenModule(ASTContext &C, llvm::Module &M, const llvm::TargetData &TD); + CodeGenModule(ASTContext &C, llvm::Module &M); ASTContext &getContext() const { return Context; } llvm::Module &getModule() const { return TheModule; } diff --git a/CodeGen/CodeGenTypes.cpp b/CodeGen/CodeGenTypes.cpp index 745ba1d87e..017b65c152 100644 --- a/CodeGen/CodeGenTypes.cpp +++ b/CodeGen/CodeGenTypes.cpp @@ -16,7 +16,6 @@ #include "clang/AST/AST.h" #include "llvm/DerivedTypes.h" #include "llvm/Module.h" -#include "llvm/Target/TargetData.h" using namespace clang; using namespace CodeGen; @@ -40,7 +39,7 @@ namespace { /// layoutStructFields - 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 layoutStructFields(CodeGenTypes &CGT, const RecordLayout &RL); + void layoutStructFields(CodeGenTypes &CGT); /// layoutUnionFields - Do the actual work and lay out all fields. Create /// corresponding llvm struct type. This should be invoked only after @@ -61,9 +60,8 @@ namespace { }; } -CodeGenTypes::CodeGenTypes(ASTContext &Ctx, llvm::Module& M, - const llvm::TargetData &TD) - : Context(Ctx), Target(Ctx.Target), TheModule(M), TheTargetData(TD) { +CodeGenTypes::CodeGenTypes(ASTContext &Ctx, llvm::Module& M) + : Context(Ctx), Target(Ctx.Target), TheModule(M) { } CodeGenTypes::~CodeGenTypes() { @@ -247,8 +245,7 @@ const llvm::Type *CodeGenTypes::ConvertNewType(QualType T) { RecordOrganizer RO; for (unsigned i = 0, e = RD->getNumMembers(); i != e; ++i) RO.addField(RD->getMember(i)); - const RecordLayout &RL = Context.getRecordLayout(RD, SourceLocation()); - RO.layoutStructFields(*this, RL); + RO.layoutStructFields(*this); // Get llvm::StructType. RecordLayoutInfo *RLI = new RecordLayoutInfo(RO.getLLVMType()); @@ -355,21 +352,16 @@ void RecordOrganizer::addField(const FieldDecl *FD) { /// - Ignore bit fields /// - Ignore field aligments /// - Ignore packed structs -void RecordOrganizer::layoutStructFields(CodeGenTypes &CGT, - const RecordLayout &RL) { +void RecordOrganizer::layoutStructFields(CodeGenTypes &CGT) { // FIXME : Use SmallVector std::vector<const llvm::Type*> Fields; unsigned FieldNo = 0; - uint64_t Cursor = 0; - for (llvm::SmallVector<const FieldDecl *, 8>::iterator I = FieldDecls.begin(), E = FieldDecls.end(); I != E; ++I) { const FieldDecl *FD = *I; const llvm::Type *Ty = CGT.ConvertType(FD->getType()); - uint64_t Offset = RL.getFieldOffset(FieldNo); - assert (Offset == Cursor && "FIXME Invalid struct layout"); - Cursor += CGT.getTargetData().getTypeSizeInBits(Ty); + // FIXME : Layout FieldDecl FD Fields.push_back(Ty); CGT.addFieldInfo(FD, FieldNo++); diff --git a/CodeGen/CodeGenTypes.h b/CodeGen/CodeGenTypes.h index b89713584c..95aea85c8e 100644 --- a/CodeGen/CodeGenTypes.h +++ b/CodeGen/CodeGenTypes.h @@ -21,7 +21,6 @@ namespace llvm { class Module; class Type; class PATypeHolder; - class TargetData; } namespace clang { @@ -62,7 +61,6 @@ class CodeGenTypes { ASTContext &Context; TargetInfo &Target; llvm::Module& TheModule; - const llvm::TargetData& TheTargetData; llvm::DenseMap<const TagDecl*, llvm::Type*> TagDeclTypes; @@ -93,10 +91,9 @@ class CodeGenTypes { /// interface to convert type T into a llvm::Type. const llvm::Type *ConvertNewType(QualType T); public: - CodeGenTypes(ASTContext &Ctx, llvm::Module &M, const llvm::TargetData &TD); + CodeGenTypes(ASTContext &Ctx, llvm::Module &M); ~CodeGenTypes(); - const llvm::TargetData &getTargetData() const { return TheTargetData; } TargetInfo &getTarget() const { return Target; } ASTContext &getContext() const { return Context; } diff --git a/CodeGen/ModuleBuilder.cpp b/CodeGen/ModuleBuilder.cpp index a7586b64c2..4a5a470563 100644 --- a/CodeGen/ModuleBuilder.cpp +++ b/CodeGen/ModuleBuilder.cpp @@ -18,9 +18,8 @@ using namespace clang; /// Init - Create an ModuleBuilder with the specified ASTContext. clang::CodeGen::BuilderTy * -clang::CodeGen::Init(ASTContext &Context, llvm::Module &M, - const llvm::TargetData &TD) { - return new CodeGenModule(Context, M, TD); +clang::CodeGen::Init(ASTContext &Context, llvm::Module &M) { + return new CodeGenModule(Context, M); } void clang::CodeGen::Terminate(BuilderTy *B) { |