aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/clang/CodeGen/ModuleBuilder.h4
-rw-r--r--include/clang/Frontend/ASTConsumers.h4
-rw-r--r--lib/CodeGen/ModuleBuilder.cpp10
-rw-r--r--lib/Frontend/Backend.cpp11
-rw-r--r--tools/clang-cc/clang-cc.cpp11
5 files changed, 26 insertions, 14 deletions
diff --git a/include/clang/CodeGen/ModuleBuilder.h b/include/clang/CodeGen/ModuleBuilder.h
index 5812da1b56..f7e2480526 100644
--- a/include/clang/CodeGen/ModuleBuilder.h
+++ b/include/clang/CodeGen/ModuleBuilder.h
@@ -18,6 +18,7 @@
#include <string>
namespace llvm {
+ class LLVMContext;
class Module;
}
@@ -34,7 +35,8 @@ namespace clang {
CodeGenerator *CreateLLVMCodeGen(Diagnostic &Diags,
const std::string &ModuleName,
- const CompileOptions &CO);
+ const CompileOptions &CO,
+ llvm::LLVMContext* C);
}
#endif
diff --git a/include/clang/Frontend/ASTConsumers.h b/include/clang/Frontend/ASTConsumers.h
index 04365d7c78..b02548556d 100644
--- a/include/clang/Frontend/ASTConsumers.h
+++ b/include/clang/Frontend/ASTConsumers.h
@@ -20,6 +20,7 @@
namespace llvm {
class Module;
+ class LLVMContext;
namespace sys { class Path; }
}
namespace clang {
@@ -79,7 +80,8 @@ ASTConsumer *CreateBackendConsumer(BackendAction Action,
const LangOptions &Features,
const CompileOptions &CompileOpts,
const std::string &ModuleID,
- llvm::raw_ostream *OS);
+ llvm::raw_ostream *OS,
+ llvm::LLVMContext* C);
// HTML printer: uses the rewriter to convert source code to HTML with
// syntax highlighting suitable for viewing in a web-browser.
diff --git a/lib/CodeGen/ModuleBuilder.cpp b/lib/CodeGen/ModuleBuilder.cpp
index 9b85df61da..7937e92967 100644
--- a/lib/CodeGen/ModuleBuilder.cpp
+++ b/lib/CodeGen/ModuleBuilder.cpp
@@ -19,6 +19,7 @@
#include "clang/AST/Expr.h"
#include "clang/Basic/Diagnostic.h"
#include "clang/Basic/TargetInfo.h"
+#include "llvm/LLVMContext.h"
#include "llvm/Module.h"
#include "llvm/Target/TargetData.h"
#include "llvm/Support/Compiler.h"
@@ -37,8 +38,8 @@ namespace {
llvm::OwningPtr<CodeGen::CodeGenModule> Builder;
public:
CodeGeneratorImpl(Diagnostic &diags, const std::string& ModuleName,
- const CompileOptions &CO)
- : Diags(diags), CompileOpts(CO), M(new llvm::Module(ModuleName)) {}
+ const CompileOptions &CO, llvm::LLVMContext* C)
+ : Diags(diags), CompileOpts(CO), M(new llvm::Module(ModuleName, C)) {}
virtual ~CodeGeneratorImpl() {}
@@ -95,6 +96,7 @@ namespace {
CodeGenerator *clang::CreateLLVMCodeGen(Diagnostic &Diags,
const std::string& ModuleName,
- const CompileOptions &CO) {
- return new CodeGeneratorImpl(Diags, ModuleName, CO);
+ const CompileOptions &CO,
+ llvm::LLVMContext* C) {
+ return new CodeGeneratorImpl(Diags, ModuleName, CO, C);
}
diff --git a/lib/Frontend/Backend.cpp b/lib/Frontend/Backend.cpp
index d8f8625d67..dc84cd8271 100644
--- a/lib/Frontend/Backend.cpp
+++ b/lib/Frontend/Backend.cpp
@@ -75,13 +75,14 @@ namespace {
public:
BackendConsumer(BackendAction action, Diagnostic &Diags,
const LangOptions &langopts, const CompileOptions &compopts,
- const std::string &infile, llvm::raw_ostream* OS) :
+ const std::string &infile, llvm::raw_ostream* OS,
+ LLVMContext* C) :
Action(action),
CompileOpts(compopts),
AsmOutStream(OS),
LLVMIRGeneration("LLVM IR Generation Time"),
CodeGenerationTime("Code Generation Time"),
- Gen(CreateLLVMCodeGen(Diags, infile, compopts)),
+ Gen(CreateLLVMCodeGen(Diags, infile, compopts, C)),
TheModule(0), TheTargetData(0), ModuleProvider(0),
CodeGenPasses(0), PerModulePasses(0), PerFunctionPasses(0) {
@@ -359,6 +360,8 @@ ASTConsumer *clang::CreateBackendConsumer(BackendAction Action,
const LangOptions &LangOpts,
const CompileOptions &CompileOpts,
const std::string& InFile,
- llvm::raw_ostream* OS) {
- return new BackendConsumer(Action, Diags, LangOpts, CompileOpts, InFile, OS);
+ llvm::raw_ostream* OS,
+ LLVMContext* C) {
+ return new BackendConsumer(Action, Diags, LangOpts, CompileOpts,
+ InFile, OS, C);
}
diff --git a/tools/clang-cc/clang-cc.cpp b/tools/clang-cc/clang-cc.cpp
index f1b10c56db..69a540bd35 100644
--- a/tools/clang-cc/clang-cc.cpp
+++ b/tools/clang-cc/clang-cc.cpp
@@ -50,6 +50,7 @@
#include "clang/Basic/SourceManager.h"
#include "clang/Basic/TargetInfo.h"
#include "clang/Basic/Version.h"
+#include "llvm/LLVMContext.h"
#include "llvm/ADT/OwningPtr.h"
#include "llvm/ADT/SmallPtrSet.h"
#include "llvm/ADT/StringExtras.h"
@@ -1746,7 +1747,8 @@ static llvm::raw_ostream* ComputeOutFile(const std::string& InFile,
///
static void ProcessInputFile(Preprocessor &PP, PreprocessorFactory &PPF,
const std::string &InFile, ProgActions PA,
- const llvm::StringMap<bool> &Features) {
+ const llvm::StringMap<bool> &Features,
+ llvm::LLVMContext* Context) {
llvm::OwningPtr<llvm::raw_ostream> OS;
llvm::OwningPtr<ASTConsumer> Consumer;
bool ClearSourceMgr = false;
@@ -1813,7 +1815,7 @@ static void ProcessInputFile(Preprocessor &PP, PreprocessorFactory &PPF,
InitializeCompileOptions(Opts, PP.getLangOptions(), Features);
Consumer.reset(CreateBackendConsumer(Act, PP.getDiagnostics(),
PP.getLangOptions(), Opts, InFile,
- OS.get()));
+ OS.get(), Context));
break;
}
@@ -2105,9 +2107,10 @@ InputFilenames(llvm::cl::Positional, llvm::cl::desc("<input files>"));
int main(int argc, char **argv) {
llvm::sys::PrintStackTraceOnErrorSignal();
llvm::PrettyStackTraceProgram X(argc, argv);
+ llvm::LLVMContext Context;
llvm::cl::ParseCommandLineOptions(argc, argv,
"LLVM 'Clang' Compiler: http://clang.llvm.org\n");
-
+
llvm::InitializeAllTargets();
llvm::InitializeAllAsmPrinters();
@@ -2281,7 +2284,7 @@ int main(int argc, char **argv) {
((PathDiagnosticClient*)DiagClient.get())->SetPreprocessor(PP.get());
// Process the source file.
- ProcessInputFile(*PP, PPFactory, InFile, ProgAction, Features);
+ ProcessInputFile(*PP, PPFactory, InFile, ProgAction, Features, &Context);
HeaderInfo.ClearFileInfo();
DiagClient->setLangOptions(0);