[cfe-commits] r43572 - in /cfe/trunk: CodeGen/CodeGenModule.cpp CodeGen/CodeGenModule.h CodeGen/CodeGenTypes.cpp CodeGen/CodeGenTypes.h CodeGen/ModuleBuilder.cpp Driver/ASTConsumers.cpp Driver/Makefile include/clang/Basic/TargetInfo.h include/clang/CodeGen/ModuleBuilder.h
Devang Patel
dpatel at apple.com
Wed Oct 31 13:01:02 PDT 2007
Author: dpatel
Date: Wed Oct 31 15:01:01 2007
New Revision: 43572
URL: http://llvm.org/viewvc/llvm-project?rev=43572&view=rev
Log:
Take 2.
Make target info available to clang code generator. This is far from complete but this helps clang codegen module make progress.
At the moment target triplet and target description strings are hard coded in clang::TargetInfo
Modified:
cfe/trunk/CodeGen/CodeGenModule.cpp
cfe/trunk/CodeGen/CodeGenModule.h
cfe/trunk/CodeGen/CodeGenTypes.cpp
cfe/trunk/CodeGen/CodeGenTypes.h
cfe/trunk/CodeGen/ModuleBuilder.cpp
cfe/trunk/Driver/ASTConsumers.cpp
cfe/trunk/Driver/Makefile
cfe/trunk/include/clang/Basic/TargetInfo.h
cfe/trunk/include/clang/CodeGen/ModuleBuilder.h
Modified: cfe/trunk/CodeGen/CodeGenModule.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/CodeGenModule.cpp?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/CodeGen/CodeGenModule.cpp (original)
+++ cfe/trunk/CodeGen/CodeGenModule.cpp Wed Oct 31 15:01:01 2007
@@ -24,9 +24,10 @@
using namespace CodeGen;
-CodeGenModule::CodeGenModule(ASTContext &C, llvm::Module &M)
- : Context(C), TheModule(M),
- Types(C, M), MemCpyFn(0), CFConstantStringClassRef(0) {}
+CodeGenModule::CodeGenModule(ASTContext &C, llvm::Module &M,
+ const llvm::TargetData &TD)
+ : Context(C), TheModule(M), TheTargetData(TD),
+ Types(C, M, TD), MemCpyFn(0), CFConstantStringClassRef(0) {}
llvm::Constant *CodeGenModule::GetAddrOfGlobalDecl(const ValueDecl *D) {
// See if it is already in the map.
Modified: cfe/trunk/CodeGen/CodeGenModule.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/CodeGenModule.h?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/CodeGen/CodeGenModule.h (original)
+++ cfe/trunk/CodeGen/CodeGenModule.h Wed Oct 31 15:01:01 2007
@@ -23,6 +23,7 @@
class Constant;
class Function;
class GlobalVariable;
+ class TargetData;
}
namespace clang {
@@ -39,6 +40,7 @@
class CodeGenModule {
ASTContext &Context;
llvm::Module &TheModule;
+ const llvm::TargetData &TheTargetData;
CodeGenTypes Types;
llvm::Function *MemCpyFn;
@@ -49,7 +51,7 @@
std::vector<llvm::Function *> BuiltinFunctions;
public:
- CodeGenModule(ASTContext &C, llvm::Module &M);
+ CodeGenModule(ASTContext &C, llvm::Module &M, const llvm::TargetData &TD);
ASTContext &getContext() const { return Context; }
llvm::Module &getModule() const { return TheModule; }
Modified: cfe/trunk/CodeGen/CodeGenTypes.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/CodeGenTypes.cpp?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/CodeGen/CodeGenTypes.cpp (original)
+++ cfe/trunk/CodeGen/CodeGenTypes.cpp Wed Oct 31 15:01:01 2007
@@ -60,8 +60,9 @@
};
}
-CodeGenTypes::CodeGenTypes(ASTContext &Ctx, llvm::Module& M)
- : Context(Ctx), Target(Ctx.Target), TheModule(M) {
+CodeGenTypes::CodeGenTypes(ASTContext &Ctx, llvm::Module& M,
+ const llvm::TargetData &TD)
+ : Context(Ctx), Target(Ctx.Target), TheModule(M), TheTargetData(TD) {
}
CodeGenTypes::~CodeGenTypes() {
Modified: cfe/trunk/CodeGen/CodeGenTypes.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/CodeGenTypes.h?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/CodeGen/CodeGenTypes.h (original)
+++ cfe/trunk/CodeGen/CodeGenTypes.h Wed Oct 31 15:01:01 2007
@@ -21,6 +21,7 @@
class Module;
class Type;
class PATypeHolder;
+ class TargetData;
}
namespace clang {
@@ -61,6 +62,7 @@
ASTContext &Context;
TargetInfo &Target;
llvm::Module& TheModule;
+ const llvm::TargetData& TheTargetData;
llvm::DenseMap<const TagDecl*, llvm::Type*> TagDeclTypes;
@@ -91,7 +93,7 @@
/// interface to convert type T into a llvm::Type.
const llvm::Type *ConvertNewType(QualType T);
public:
- CodeGenTypes(ASTContext &Ctx, llvm::Module &M);
+ CodeGenTypes(ASTContext &Ctx, llvm::Module &M, const llvm::TargetData &TD);
~CodeGenTypes();
TargetInfo &getTarget() const { return Target; }
Modified: cfe/trunk/CodeGen/ModuleBuilder.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/CodeGen/ModuleBuilder.cpp?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/CodeGen/ModuleBuilder.cpp (original)
+++ cfe/trunk/CodeGen/ModuleBuilder.cpp Wed Oct 31 15:01:01 2007
@@ -18,8 +18,9 @@
/// Init - Create an ModuleBuilder with the specified ASTContext.
clang::CodeGen::BuilderTy *
-clang::CodeGen::Init(ASTContext &Context, llvm::Module &M) {
- return new CodeGenModule(Context, M);
+clang::CodeGen::Init(ASTContext &Context, llvm::Module &M,
+ const llvm::TargetData &TD) {
+ return new CodeGenModule(Context, M, TD);
}
void clang::CodeGen::Terminate(BuilderTy *B) {
Modified: cfe/trunk/Driver/ASTConsumers.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/ASTConsumers.cpp?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/Driver/ASTConsumers.cpp (original)
+++ cfe/trunk/Driver/ASTConsumers.cpp Wed Oct 31 15:01:01 2007
@@ -379,14 +379,18 @@
// LLVM Emitter
#include "clang/Basic/Diagnostic.h"
+#include "clang/Basic/TargetInfo.h"
#include "clang/CodeGen/ModuleBuilder.h"
#include "llvm/Module.h"
+#include "llvm/Target/TargetData.h"
+#include "llvm/Target/TargetMachine.h"
#include <iostream>
namespace {
class LLVMEmitter : public ASTConsumer {
Diagnostic &Diags;
llvm::Module *M;
+ const llvm::TargetData *TD;
ASTContext *Ctx;
CodeGen::BuilderTy *Builder;
public:
@@ -394,7 +398,9 @@
virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
Ctx = &Context;
M = new llvm::Module("foo");
- Builder = CodeGen::Init(Context, *M);
+ M->setTargetTriple(Ctx->Target.getTargetTriple());
+ TD = new llvm::TargetData(Ctx->Target.getTargetDescription());
+ Builder = CodeGen::Init(Context, *M, *TD);
}
virtual void HandleTopLevelDecl(Decl *D) {
Modified: cfe/trunk/Driver/Makefile
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/Makefile?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/Driver/Makefile (original)
+++ cfe/trunk/Driver/Makefile Wed Oct 31 15:01:01 2007
@@ -6,6 +6,8 @@
USEDLIBS = clangCodeGen.a clangAnalysis.a clangRewrite.a clangSEMA.a \
clangAST.a clangParse.a clangLex.a clangBasic.a \
LLVMCore.a LLVMSupport.a LLVMSystem.a \
- LLVMBitWriter.a LLVMBitReader.a
+ LLVMBitWriter.a LLVMBitReader.a LLVMTarget.a
+
+
include $(LEVEL)/Makefile.common
Modified: cfe/trunk/include/clang/Basic/TargetInfo.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/TargetInfo.h?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/include/clang/Basic/TargetInfo.h (original)
+++ cfe/trunk/include/clang/Basic/TargetInfo.h Wed Oct 31 15:01:01 2007
@@ -218,6 +218,17 @@
getLongLongInfo(Size, Align, Loc);
return static_cast<unsigned>(Size);
}
+
+ const char *getTargetTriple() {
+ // FIXME !
+ return "i686-apple-darwin9";
+ }
+ const char *getTargetDescription() {
+ // FIXME !
+ // Hard code darwin-x86 for now.
+ return "e-p:32:32:32-i1:8:8-i8:8:8-i16:16:16-i32:32:32-i64:32:64-f32:32:\
+32-f64:32:64-v64:64:64-v128:128:128-a0:0:64-f80:128:128";
+ }
private:
void ComputeWCharInfo(SourceLocation Loc);
};
Modified: cfe/trunk/include/clang/CodeGen/ModuleBuilder.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/CodeGen/ModuleBuilder.h?rev=43572&r1=43571&r2=43572&view=diff
==============================================================================
--- cfe/trunk/include/clang/CodeGen/ModuleBuilder.h (original)
+++ cfe/trunk/include/clang/CodeGen/ModuleBuilder.h Wed Oct 31 15:01:01 2007
@@ -16,6 +16,7 @@
namespace llvm {
class Module;
+ class TargetData;
}
namespace clang {
@@ -29,7 +30,8 @@
typedef void BuilderTy;
/// Init - Create an ModuleBuilder with the specified ASTContext.
- BuilderTy *Init(ASTContext &Context, llvm::Module &M);
+ BuilderTy *Init(ASTContext &Context, llvm::Module &M,
+ const llvm::TargetData &TD);
/// CodeGenFunction - Convert the AST node for a FunctionDecl into LLVM.
///
More information about the cfe-commits
mailing list