summaryrefslogtreecommitdiffstats
path: root/clang/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
commit6abe39c61e8240898d286cb732099693282ebacd (patch)
treebb4c8c319da128673f6095f57e13b6716b615f0b /clang/lib/CodeGen/ModuleBuilder.cpp
parente14c4087a39e3cdf71ed3d979705056a448421e8 (diff)
downloadbcm5719-llvm-6abe39c61e8240898d286cb732099693282ebacd.tar.gz
bcm5719-llvm-6abe39c61e8240898d286cb732099693282ebacd.zip
Create a TargetMachine whenever we create a CodeGenAction. The codegen of
some builtins will rely on target knowledge. llvm-svn: 97693
Diffstat (limited to 'clang/lib/CodeGen/ModuleBuilder.cpp')
-rw-r--r--clang/lib/CodeGen/ModuleBuilder.cpp13
1 files changed, 9 insertions, 4 deletions
diff --git a/clang/lib/CodeGen/ModuleBuilder.cpp b/clang/lib/CodeGen/ModuleBuilder.cpp
index 1e1edc1c482..4ae18bbb14a 100644
--- a/clang/lib/CodeGen/ModuleBuilder.cpp
+++ b/clang/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);
}
OpenPOWER on IntegriCloud