diff --git a/include/clang/CodeGen/ModuleBuilder.h b/include/clang/CodeGen/ModuleBuilder.h
index f7e2480..cf83aaf 100644
--- a/include/clang/CodeGen/ModuleBuilder.h
+++ b/include/clang/CodeGen/ModuleBuilder.h
@@ -36,7 +36,7 @@
   CodeGenerator *CreateLLVMCodeGen(Diagnostic &Diags,
                                    const std::string &ModuleName,
                                    const CompileOptions &CO,
-                                   llvm::LLVMContext* C);
+                                   const llvm::LLVMContext& C);
 }
 
 #endif
diff --git a/include/clang/Frontend/ASTConsumers.h b/include/clang/Frontend/ASTConsumers.h
index b025485..35b00f1 100644
--- a/include/clang/Frontend/ASTConsumers.h
+++ b/include/clang/Frontend/ASTConsumers.h
@@ -81,7 +81,7 @@
                                    const CompileOptions &CompileOpts,
                                    const std::string &ModuleID,
                                    llvm::raw_ostream *OS,
-                                   llvm::LLVMContext* C);
+                                   const 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 7937e92..3faedc1 100644
--- a/lib/CodeGen/ModuleBuilder.cpp
+++ b/lib/CodeGen/ModuleBuilder.cpp
@@ -38,7 +38,7 @@
     llvm::OwningPtr<CodeGen::CodeGenModule> Builder;
   public:
     CodeGeneratorImpl(Diagnostic &diags, const std::string& ModuleName,
-                      const CompileOptions &CO, llvm::LLVMContext* C)
+                      const CompileOptions &CO, const llvm::LLVMContext& C)
       : Diags(diags), CompileOpts(CO), M(new llvm::Module(ModuleName, C)) {}
     
     virtual ~CodeGeneratorImpl() {}
@@ -97,6 +97,6 @@
 CodeGenerator *clang::CreateLLVMCodeGen(Diagnostic &Diags, 
                                         const std::string& ModuleName,
                                         const CompileOptions &CO,
-                                        llvm::LLVMContext* C) {
+                                        const llvm::LLVMContext& C) {
   return new CodeGeneratorImpl(Diags, ModuleName, CO, C);
 }
diff --git a/lib/Frontend/Backend.cpp b/lib/Frontend/Backend.cpp
index dc84cd8..6b7f9ae 100644
--- a/lib/Frontend/Backend.cpp
+++ b/lib/Frontend/Backend.cpp
@@ -76,7 +76,7 @@
     BackendConsumer(BackendAction action, Diagnostic &Diags, 
                     const LangOptions &langopts, const CompileOptions &compopts,
                     const std::string &infile, llvm::raw_ostream* OS,
-                    LLVMContext* C) :
+                    const LLVMContext& C) :
       Action(action), 
       CompileOpts(compopts),
       AsmOutStream(OS), 
@@ -361,7 +361,7 @@
                                           const CompileOptions &CompileOpts,
                                           const std::string& InFile,
                                           llvm::raw_ostream* OS,
-                                          LLVMContext* C) {
+                                          const 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 69a540b..341c10b 100644
--- a/tools/clang-cc/clang-cc.cpp
+++ b/tools/clang-cc/clang-cc.cpp
@@ -1748,7 +1748,7 @@
 static void ProcessInputFile(Preprocessor &PP, PreprocessorFactory &PPF,
                              const std::string &InFile, ProgActions PA,
                              const llvm::StringMap<bool> &Features,
-                             llvm::LLVMContext* Context) {
+                             const llvm::LLVMContext& Context) {
   llvm::OwningPtr<llvm::raw_ostream> OS;
   llvm::OwningPtr<ASTConsumer> Consumer;
   bool ClearSourceMgr = false;
@@ -2284,7 +2284,7 @@
       ((PathDiagnosticClient*)DiagClient.get())->SetPreprocessor(PP.get());
 
     // Process the source file.
-    ProcessInputFile(*PP, PPFactory, InFile, ProgAction, Features, &Context);
+    ProcessInputFile(*PP, PPFactory, InFile, ProgAction, Features, Context);
     
     HeaderInfo.ClearFileInfo();
     DiagClient->setLangOptions(0);
