summaryrefslogtreecommitdiff
path: root/lib/CodeGen/ModuleBuilder.cpp
diff options
context:
space:
mode:
authorJohn McCall <rjmccall@apple.com>2010-03-04 00:23:29 +0000
committerJohn McCall <rjmccall@apple.com>2010-03-04 00:23:29 +0000
commitc9fe644675503894e9e76e8ecd8e6519426548de (patch)
treeff130be72fa30cac9af308e4eedb57d8c647d818 /lib/CodeGen/ModuleBuilder.cpp
parent5fccd36204f11c8491325038e6ffcc784399098e (diff)
downloadclang-c9fe644675503894e9e76e8ecd8e6519426548de.tar.gz
Create a TargetMachine whenever we create a CodeGenAction. The codegen of
some builtins will rely on target knowledge. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@97693 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/ModuleBuilder.cpp')
-rw-r--r--lib/CodeGen/ModuleBuilder.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/lib/CodeGen/ModuleBuilder.cpp b/lib/CodeGen/ModuleBuilder.cpp
index 1e1edc1c48..4ae18bbb14 100644
--- a/lib/CodeGen/ModuleBuilder.cpp
+++ b/lib/CodeGen/ModuleBuilder.cpp
@@ -29,6 +29,7 @@ namespace {
class CodeGeneratorImpl : public CodeGenerator {
Diagnostic &Diags;
llvm::OwningPtr<const llvm::TargetData> TD;
+ const llvm::TargetMachine &TM;
ASTContext *Ctx;
const CodeGenOptions CodeGenOpts; // Intentionally copied in.
protected:
@@ -36,8 +37,11 @@ namespace {
llvm::OwningPtr<CodeGen::CodeGenModule> Builder;
public:
CodeGeneratorImpl(Diagnostic &diags, const std::string& ModuleName,
- const CodeGenOptions &CGO, llvm::LLVMContext& C)
- : Diags(diags), CodeGenOpts(CGO), M(new llvm::Module(ModuleName, C)) {}
+ const CodeGenOptions &CGO,
+ const llvm::TargetMachine &TM,
+ llvm::LLVMContext& C)
+ : Diags(diags), TM(TM), CodeGenOpts(CGO),
+ M(new llvm::Module(ModuleName, C)) {}
virtual ~CodeGeneratorImpl() {}
@@ -56,7 +60,7 @@ namespace {
M->setDataLayout(Ctx->Target.getTargetDescription());
TD.reset(new llvm::TargetData(Ctx->Target.getTargetDescription()));
Builder.reset(new CodeGen::CodeGenModule(Context, CodeGenOpts,
- *M, *TD, Diags));
+ *M, TM, *TD, Diags));
}
virtual void HandleTopLevelDecl(DeclGroupRef DG) {
@@ -95,6 +99,7 @@ namespace {
CodeGenerator *clang::CreateLLVMCodeGen(Diagnostic &Diags,
const std::string& ModuleName,
const CodeGenOptions &CGO,
+ const llvm::TargetMachine &Machine,
llvm::LLVMContext& C) {
- return new CodeGeneratorImpl(Diags, ModuleName, CGO, C);
+ return new CodeGeneratorImpl(Diags, ModuleName, CGO, Machine, C);
}