[cfe-commits] r88764 - in /cfe/trunk: include/clang/Frontend/CompilerInstance.h lib/Frontend/CompilerInstance.cpp tools/clang-cc/clang-cc.cpp

Daniel Dunbar daniel at zuster.org
Fri Nov 13 23:53:05 PST 2009


Author: ddunbar
Date: Sat Nov 14 01:53:04 2009
New Revision: 88764

URL: http://llvm.org/viewvc/llvm-project?rev=88764&view=rev
Log:
Add CompilerInstance::InitializeSourceManager.

Modified:
    cfe/trunk/include/clang/Frontend/CompilerInstance.h
    cfe/trunk/lib/Frontend/CompilerInstance.cpp
    cfe/trunk/tools/clang-cc/clang-cc.cpp

Modified: cfe/trunk/include/clang/Frontend/CompilerInstance.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Frontend/CompilerInstance.h?rev=88764&r1=88763&r2=88764&view=diff

==============================================================================
--- cfe/trunk/include/clang/Frontend/CompilerInstance.h (original)
+++ cfe/trunk/include/clang/Frontend/CompilerInstance.h Sat Nov 14 01:53:04 2009
@@ -489,6 +489,26 @@
                    std::string *ResultPathName = 0);
 
   /// }
+  /// @name Initialization Utility Methods
+  /// {
+
+  /// InitializeSourceManager - Initialize the source manager to set InputFile
+  /// as the main file.
+  ///
+  /// \return True on success.
+  bool InitializeSourceManager(llvm::StringRef InputFile);
+
+  /// InitializeSourceManager - Initialize the source manager to set InputFile
+  /// as the main file.
+  ///
+  /// \return True on success.
+  static bool InitializeSourceManager(llvm::StringRef InputFile,
+                                      Diagnostic &Diags,
+                                      FileManager &FileMgr,
+                                      SourceManager &SourceMgr,
+                                      const FrontendOptions &Opts);
+
+  /// }
 };
 
 } // end namespace clang

Modified: cfe/trunk/lib/Frontend/CompilerInstance.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Frontend/CompilerInstance.cpp?rev=88764&r1=88763&r2=88764&view=diff

==============================================================================
--- cfe/trunk/lib/Frontend/CompilerInstance.cpp (original)
+++ cfe/trunk/lib/Frontend/CompilerInstance.cpp Sat Nov 14 01:53:04 2009
@@ -25,6 +25,7 @@
 #include "clang/Frontend/Utils.h"
 #include "clang/Sema/CodeCompleteConsumer.h"
 #include "llvm/LLVMContext.h"
+#include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/raw_ostream.h"
 #include "llvm/System/Path.h"
 using namespace clang;
@@ -361,3 +362,40 @@
 
   return OS;
 }
+
+// Initialization Utilities
+
+bool CompilerInstance::InitializeSourceManager(llvm::StringRef InputFile) {
+  return InitializeSourceManager(InputFile, getDiagnostics(), getFileManager(),
+                                 getSourceManager(), getFrontendOpts());
+}
+
+bool CompilerInstance::InitializeSourceManager(llvm::StringRef InputFile,
+                                               Diagnostic &Diags,
+                                               FileManager &FileMgr,
+                                               SourceManager &SourceMgr,
+                                               const FrontendOptions &Opts) {
+  // Figure out where to get and map in the main file.
+  if (Opts.EmptyInputOnly) {
+    const char *EmptyStr = "";
+    llvm::MemoryBuffer *SB =
+      llvm::MemoryBuffer::getMemBuffer(EmptyStr, EmptyStr, "<empty input>");
+    SourceMgr.createMainFileIDForMemBuffer(SB);
+  } else if (InputFile != "-") {
+    const FileEntry *File = FileMgr.getFile(InputFile);
+    if (File) SourceMgr.createMainFileID(File, SourceLocation());
+    if (SourceMgr.getMainFileID().isInvalid()) {
+      Diags.Report(diag::err_fe_error_reading) << InputFile;
+      return false;
+    }
+  } else {
+    llvm::MemoryBuffer *SB = llvm::MemoryBuffer::getSTDIN();
+    SourceMgr.createMainFileIDForMemBuffer(SB);
+    if (SourceMgr.getMainFileID().isInvalid()) {
+      Diags.Report(diag::err_fe_error_reading_stdin);
+      return false;
+    }
+  }
+
+  return true;
+}

Modified: cfe/trunk/tools/clang-cc/clang-cc.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/tools/clang-cc/clang-cc.cpp?rev=88764&r1=88763&r2=88764&view=diff

==============================================================================
--- cfe/trunk/tools/clang-cc/clang-cc.cpp (original)
+++ cfe/trunk/tools/clang-cc/clang-cc.cpp Sat Nov 14 01:53:04 2009
@@ -164,37 +164,6 @@
 // Utility Methods
 //===----------------------------------------------------------------------===//
 
-static bool InitializeSourceManager(Preprocessor &PP,
-                                    const FrontendOptions &FEOpts,
-                                    const std::string &InFile) {
-  // Figure out where to get and map in the main file.
-  SourceManager &SourceMgr = PP.getSourceManager();
-  FileManager &FileMgr = PP.getFileManager();
-
-  if (FEOpts.EmptyInputOnly) {
-    const char *EmptyStr = "";
-    llvm::MemoryBuffer *SB =
-      llvm::MemoryBuffer::getMemBuffer(EmptyStr, EmptyStr, "<empty input>");
-    SourceMgr.createMainFileIDForMemBuffer(SB);
-  } else if (InFile != "-") {
-    const FileEntry *File = FileMgr.getFile(InFile);
-    if (File) SourceMgr.createMainFileID(File, SourceLocation());
-    if (SourceMgr.getMainFileID().isInvalid()) {
-      PP.getDiagnostics().Report(diag::err_fe_error_reading) << InFile.c_str();
-      return true;
-    }
-  } else {
-    llvm::MemoryBuffer *SB = llvm::MemoryBuffer::getSTDIN();
-    SourceMgr.createMainFileIDForMemBuffer(SB);
-    if (SourceMgr.getMainFileID().isInvalid()) {
-      PP.getDiagnostics().Report(diag::err_fe_error_reading_stdin);
-      return true;
-    }
-  }
-
-  return false;
-}
-
 std::string GetBuiltinIncludePath(const char *Argv0) {
   llvm::sys::Path P =
     llvm::sys::Path::GetMainExecutable(Argv0,
@@ -423,7 +392,7 @@
 
   // Initialize the main file entry. This needs to be delayed until after PCH
   // has loaded.
-  if (InitializeSourceManager(PP, CI.getFrontendOpts(), InFile))
+  if (!CI.InitializeSourceManager(InFile))
     return;
 
   if (Consumer) {





More information about the cfe-commits mailing list