diff options
author | John McCall <rjmccall@apple.com> | 2010-03-04 00:23:29 +0000 |
---|---|---|
committer | John McCall <rjmccall@apple.com> | 2010-03-04 00:23:29 +0000 |
commit | c9fe644675503894e9e76e8ecd8e6519426548de (patch) | |
tree | ff130be72fa30cac9af308e4eedb57d8c647d818 /lib/CodeGen/ModuleBuilder.cpp | |
parent | 5fccd36204f11c8491325038e6ffcc784399098e (diff) | |
download | clang-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.cpp | 13 |
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); } |