[cfe-commits] r45231 - in /cfe/trunk: Driver/clang.cpp include/clang/Basic/SourceManager.h

Ted Kremenek kremenek at apple.com
Wed Dec 19 15:48:46 PST 2007


Author: kremenek
Date: Wed Dec 19 17:48:45 2007
New Revision: 45231

URL: http://llvm.org/viewvc/llvm-project?rev=45231&view=rev
Log:
Added methods createMainFileID() and createMainFileIDForMemBuffer() to
SourceManager to allow SourceManager to directly intern the MainFileID
when it is created.  Removed setMainFileID().

Modified:
    cfe/trunk/Driver/clang.cpp
    cfe/trunk/include/clang/Basic/SourceManager.h

Modified: cfe/trunk/Driver/clang.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/clang.cpp?rev=45231&r1=45230&r2=45231&view=diff

==============================================================================
--- cfe/trunk/Driver/clang.cpp (original)
+++ cfe/trunk/Driver/clang.cpp Wed Dec 19 17:48:45 2007
@@ -530,19 +530,18 @@
   FileManager &FileMgr = PP.getFileManager();
   
   // Figure out where to get and map in the main file.
-  unsigned MainFileID = 0;
   SourceManager &SourceMgr = PP.getSourceManager();
   if (InFile != "-") {
     const FileEntry *File = FileMgr.getFile(InFile);
-    if (File) MainFileID = SourceMgr.createFileID(File, SourceLocation());
-    if (MainFileID == 0) {
+    if (File) SourceMgr.createMainFileID(File, SourceLocation());
+    if (SourceMgr.getMainFileID() == 0) {
       fprintf(stderr, "Error reading '%s'!\n",InFile.c_str());
       return 0;
     }
   } else {
     llvm::MemoryBuffer *SB = llvm::MemoryBuffer::getSTDIN();
-    if (SB) MainFileID = SourceMgr.createFileIDForMemBuffer(SB);
-    if (MainFileID == 0) {
+    if (SB) SourceMgr.createMainFileIDForMemBuffer(SB);
+    if (SourceMgr.getMainFileID() == 0) {
       fprintf(stderr, "Error reading standard input!  Empty?\n");
       return 0;
     }
@@ -562,10 +561,8 @@
   PP.setPredefines(&PredefineBuffer[0]);
   
   // Once we've read this, we're done.
-  return MainFileID;
+  return SourceMgr.getMainFileID();
 }
- 
- 
 
 //===----------------------------------------------------------------------===//
 // Preprocessor include path information.
@@ -931,7 +928,7 @@
       
     case SerializeAST:
       // FIXME: Allow user to tailor where the file is written.
-      return CreateASTSerializer(InFile, Diag, LangOpts);
+      return CreateASTSerializer(InFile, OutputFile, Diag, LangOpts);
       
     case RewriteTest:
       return CreateCodeRewriterTest(Diag);
@@ -1170,15 +1167,10 @@
       Preprocessor PP(Diags, LangInfo, *Target, SourceMgr, HeaderInfo);
       
       std::vector<char> PredefineBuffer;
-      unsigned MainFileID = InitializePreprocessor(PP, InFile, PredefineBuffer);
-      
-      if (!MainFileID)
+      if (!InitializePreprocessor(PP, InFile, PredefineBuffer))
         continue;
       
-      SourceMgr.setMainFileID(MainFileID);
-
-      ProcessInputFile(PP, InFile, *DiagClient);
-      
+      ProcessInputFile(PP, InFile, *DiagClient);      
       HeaderInfo.ClearFileInfo();
       
       if (Stats)

Modified: cfe/trunk/include/clang/Basic/SourceManager.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Basic/SourceManager.h?rev=45231&r1=45230&r2=45231&view=diff

==============================================================================
--- cfe/trunk/include/clang/Basic/SourceManager.h (original)
+++ cfe/trunk/include/clang/Basic/SourceManager.h Wed Dec 19 17:48:45 2007
@@ -237,9 +237,6 @@
   /// getMainFileID - Returns the FileID of the main source file.
   unsigned getMainFileID() const { return MainFileID; }
   
-  /// setMainFileID - Set the FileID of the main source file.
-  void setMainFileID(unsigned ID) { MainFileID = ID; }
-  
   /// createFileID - Create a new FileID that represents the specified file
   /// being #included from the specified IncludePosition.  This returns 0 on
   /// error and translates NULL into standard input.
@@ -249,6 +246,15 @@
     return createFileID(IR, IncludePos);
   }
   
+  /// createMainFileID - Create the FileID for the main source file.
+  unsigned createMainFileID(const FileEntry *SourceFile,
+                            SourceLocation IncludePos) {
+    
+    assert (MainFileID == 0 && "MainFileID already set!");
+    MainFileID = createFileID(SourceFile,IncludePos);
+    return MainFileID;
+  }
+  
   /// createFileIDForMemBuffer - Create a new FileID that represents the
   /// specified memory buffer.  This does no caching of the buffer and takes
   /// ownership of the MemoryBuffer, so only pass a MemoryBuffer to this once.
@@ -256,6 +262,15 @@
     return createFileID(createMemBufferContentCache(Buffer), SourceLocation());
   }
   
+  /// createMainFileIDForMembuffer - Create the FileID for a memory buffer
+  ///  that will represent the FileID for the main source.  One example
+  ///  of when this would be used is when the main source is read from STDIN.
+  unsigned createMainFileIDForMemBuffer(const llvm::MemoryBuffer *Buffer) {
+    assert (MainFileID == 0 && "MainFileID already set!");
+    MainFileID = createMainFileIDForMemBuffer(Buffer);
+    return MainFileID;
+  }
+  
   /// getInstantiationLoc - Return a new SourceLocation that encodes the fact
   /// that a token at Loc should actually be referenced from InstantiationLoc.
   SourceLocation getInstantiationLoc(SourceLocation Loc,





More information about the cfe-commits mailing list