[cfe-commits] r45228 - in /cfe/trunk: Driver/ASTConsumers.cpp Driver/DiagChecker.cpp Driver/PrintPreprocessedOutput.cpp Driver/RewriteTest.cpp Driver/SerializationTest.cpp Driver/clang.cpp Driver/clang.h Lex/Preprocessor.cpp Sema/ASTStreamer.cpp include/clang/AST/ASTConsumer.h include/clang/Lex/Preprocessor.h include/clang/Sema/ASTStreamer.h

Ted Kremenek kremenek at apple.com
Wed Dec 19 14:51:15 PST 2007


Author: kremenek
Date: Wed Dec 19 16:51:13 2007
New Revision: 45228

URL: http://llvm.org/viewvc/llvm-project?rev=45228&view=rev
Log:
Interned MainFileID within SourceManager. Since SourceManager is referenced by
both Preprocessor and ASTContext, we no longer need to explicitly pass
MainFileID around in function calls that also pass either Preprocessor or
ASTContext. This resulted in some nice cleanups in the ASTConsumers and the
driver.

Modified:
    cfe/trunk/Driver/ASTConsumers.cpp
    cfe/trunk/Driver/DiagChecker.cpp
    cfe/trunk/Driver/PrintPreprocessedOutput.cpp
    cfe/trunk/Driver/RewriteTest.cpp
    cfe/trunk/Driver/SerializationTest.cpp
    cfe/trunk/Driver/clang.cpp
    cfe/trunk/Driver/clang.h
    cfe/trunk/Lex/Preprocessor.cpp
    cfe/trunk/Sema/ASTStreamer.cpp
    cfe/trunk/include/clang/AST/ASTConsumer.h
    cfe/trunk/include/clang/Lex/Preprocessor.h
    cfe/trunk/include/clang/Sema/ASTStreamer.h

Modified: cfe/trunk/Driver/ASTConsumers.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/ASTConsumers.cpp?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/Driver/ASTConsumers.cpp (original)
+++ cfe/trunk/Driver/ASTConsumers.cpp Wed Dec 19 16:51:13 2007
@@ -356,7 +356,7 @@
   public:
     ASTDumper() : DeclPrinter() {}
     
-    void Initialize(ASTContext &Context, unsigned MainFileID) {
+    void Initialize(ASTContext &Context) {
       SM = &Context.getSourceManager();
     }
     
@@ -400,7 +400,7 @@
   class ASTViewer : public ASTConsumer {
     SourceManager *SM;
   public:
-    void Initialize(ASTContext &Context, unsigned MainFileID) {
+    void Initialize(ASTContext &Context) {
       SM = &Context.getSourceManager();
     }
     
@@ -482,7 +482,7 @@
   class LivenessVisitor : public CFGVisitor {
     SourceManager *SM;
   public:
-    virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+    virtual void Initialize(ASTContext &Context) {
       SM = &Context.getSourceManager();
     }
 
@@ -507,7 +507,7 @@
     ASTContext *Ctx;
   public:
     DeadStoreVisitor(Diagnostic &diags) : Diags(diags) {}
-    virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+    virtual void Initialize(ASTContext &Context) {
       Ctx = &Context;
     }
     
@@ -530,7 +530,7 @@
     ASTContext *Ctx;
   public:
     UninitValsVisitor(Diagnostic &diags) : Diags(diags) {}
-    virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+    virtual void Initialize(ASTContext &Context) {
       Ctx = &Context;
     }
     
@@ -565,7 +565,7 @@
     LLVMEmitter(Diagnostic &diags, const LangOptions &LO) 
       : Diags(diags)
       , Features(LO) {}
-    virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+    virtual void Initialize(ASTContext &Context) {
       Ctx = &Context;
       M = new llvm::Module("foo");
       M->setTargetTriple(Ctx->Target.getTargetTriple());
@@ -618,7 +618,7 @@
                   const LangOptions &LO)
     : Diags(diags), TU(LO), FName(F) {}
     
-    virtual void Initialize(ASTContext &Context, unsigned MainFileID) {
+    virtual void Initialize(ASTContext &Context) {
       TU.setContext(&Context);
     }
     

Modified: cfe/trunk/Driver/DiagChecker.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/DiagChecker.cpp?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/Driver/DiagChecker.cpp (original)
+++ cfe/trunk/Driver/DiagChecker.cpp Wed Dec 19 16:51:13 2007
@@ -82,16 +82,16 @@
   }
 }
 
-/// FindExpectedDiags - Lex the file to finds all of the expected errors and
-/// warnings.
-static void FindExpectedDiags(Preprocessor &PP, unsigned MainFileID,
+/// FindExpectedDiags - Lex the main source file to find all of the
+//   expected errors and warnings.
+static void FindExpectedDiags(Preprocessor &PP,
                               DiagList &ExpectedErrors,
                               DiagList &ExpectedWarnings) {
   // Return comments as tokens, this is how we find expected diagnostics.
   PP.SetCommentRetentionState(true, true);
 
   // Enter the cave.
-  PP.EnterMainSourceFile(MainFileID);
+  PP.EnterMainSourceFile();
 
   // Turn off all warnings from relexing or preprocessing.
   PP.getDiagnostics().setWarnOnExtensions(false);
@@ -225,14 +225,14 @@
 
 
 /// CheckASTConsumer - Implement diagnostic checking for AST consumers.
-bool clang::CheckASTConsumer(Preprocessor &PP, unsigned MainFileID,
-                             ASTConsumer* C) {
+bool clang::CheckASTConsumer(Preprocessor &PP, ASTConsumer* C) {
+  
   // Parse the AST and run the consumer, ultimately deleting C.
-  ParseAST(PP, MainFileID, C);
+  ParseAST(PP, C);
   
   // Gather the set of expected diagnostics.
   DiagList ExpectedErrors, ExpectedWarnings;
-  FindExpectedDiags(PP, MainFileID, ExpectedErrors, ExpectedWarnings);
+  FindExpectedDiags(PP, ExpectedErrors, ExpectedWarnings);
 
   // Check that the expected diagnostics occurred.
   return CheckResults(PP, ExpectedErrors, ExpectedWarnings);

Modified: cfe/trunk/Driver/PrintPreprocessedOutput.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/PrintPreprocessedOutput.cpp?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/Driver/PrintPreprocessedOutput.cpp (original)
+++ cfe/trunk/Driver/PrintPreprocessedOutput.cpp Wed Dec 19 16:51:13 2007
@@ -531,7 +531,7 @@
 
 /// DoPrintPreprocessedInput - This implements -E mode.
 ///
-void clang::DoPrintPreprocessedInput(unsigned MainFileID, Preprocessor &PP) {
+void clang::DoPrintPreprocessedInput(Preprocessor &PP) {
   // Inform the preprocessor whether we want it to retain comments or not, due
   // to -C or -CC.
   PP.SetCommentRetentionState(EnableCommentOutput, EnableMacroCommentOutput);
@@ -550,7 +550,7 @@
   // After we have configured the preprocessor, enter the main file.
   
   // Start parsing the specified input file.
-  PP.EnterMainSourceFile(MainFileID);
+  PP.EnterMainSourceFile();
 
   // Consume all of the tokens that come from the predefines buffer.  Those
   // should not be emitted into the output and are guaranteed to be at the

Modified: cfe/trunk/Driver/RewriteTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/RewriteTest.cpp?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/Driver/RewriteTest.cpp (original)
+++ cfe/trunk/Driver/RewriteTest.cpp Wed Dec 19 16:51:13 2007
@@ -62,7 +62,7 @@
     
     static const int OBJC_ABI_VERSION =7 ;
   public:
-    void Initialize(ASTContext &context, unsigned mainFileID) {
+    void Initialize(ASTContext &context) {
       Context = &context;
       SM = &Context->getSourceManager();
       MsgSendFunctionDecl = 0;
@@ -81,7 +81,7 @@
       SuperStructDecl = 0;
       
       // Get the ID and start/end of the main file.
-      MainFileID = mainFileID;
+      MainFileID = SM->getMainFileID();
       const llvm::MemoryBuffer *MainBuf = SM->getBuffer(MainFileID);
       MainFileStart = MainBuf->getBufferStart();
       MainFileEnd = MainBuf->getBufferEnd();
@@ -123,7 +123,7 @@
                       "extern Protocol *objc_getProtocol(const char *);\n"
                       "#include <objc/objc.h>\n";
 
-      Rewrite.InsertText(SourceLocation::getFileLoc(mainFileID, 0), 
+      Rewrite.InsertText(SourceLocation::getFileLoc(MainFileID, 0), 
                          s, strlen(s));
     }
 

Modified: cfe/trunk/Driver/SerializationTest.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/SerializationTest.cpp?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/Driver/SerializationTest.cpp (original)
+++ cfe/trunk/Driver/SerializationTest.cpp Wed Dec 19 16:51:13 2007
@@ -42,7 +42,7 @@
   
   ~SerializationTest();
 
-  virtual void Initialize(ASTContext& context, unsigned) {
+  virtual void Initialize(ASTContext& context) {
     TU.setContext(&context);
   }  
 

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

==============================================================================
--- cfe/trunk/Driver/clang.cpp (original)
+++ cfe/trunk/Driver/clang.cpp Wed Dec 19 16:51:13 2007
@@ -878,9 +878,9 @@
 // Basic Parser driver
 //===----------------------------------------------------------------------===//
 
-static void ParseFile(Preprocessor &PP, MinimalAction *PA, unsigned MainFileID){
+static void ParseFile(Preprocessor &PP, MinimalAction *PA){
   Parser P(PP, *PA);
-  PP.EnterMainSourceFile(MainFileID);
+  PP.EnterMainSourceFile();
   
   // Parsing the specified input file.
   P.ParseTranslationUnit();
@@ -963,7 +963,7 @@
   case DumpTokens: {                 // Token dump mode.
     Token Tok;
     // Start parsing the specified input file.
-    PP.EnterMainSourceFile(MainFileID);
+    PP.EnterMainSourceFile();
     do {
       PP.Lex(Tok);
       PP.DumpToken(Tok, true);
@@ -975,7 +975,7 @@
   case RunPreprocessorOnly: {        // Just lex as fast as we can, no output.
     Token Tok;
     // Start parsing the specified input file.
-    PP.EnterMainSourceFile(MainFileID);
+    PP.EnterMainSourceFile();
     do {
       PP.Lex(Tok);
     } while (Tok.isNot(tok::eof));
@@ -984,18 +984,17 @@
   }
     
   case PrintPreprocessedInput:       // -E mode.
-    DoPrintPreprocessedInput(MainFileID, PP);
+    DoPrintPreprocessedInput(PP);
     ClearSourceMgr = true;
     break;
     
   case ParseNoop:                    // -parse-noop
-    ParseFile(PP, new MinimalAction(PP.getIdentifierTable()), MainFileID);
+    ParseFile(PP, new MinimalAction(PP.getIdentifierTable()));
     ClearSourceMgr = true;
     break;
     
   case ParsePrintCallbacks:
-    ParseFile(PP, CreatePrintParserActionsAction(PP.getIdentifierTable()), 
-              MainFileID);
+    ParseFile(PP, CreatePrintParserActionsAction(PP.getIdentifierTable()));
     ClearSourceMgr = true;
     break;
       
@@ -1006,10 +1005,10 @@
   
   if (Consumer) {
     if (VerifyDiagnostics)
-      exit(CheckASTConsumer(PP, MainFileID, Consumer));
+      exit(CheckASTConsumer(PP, Consumer));
     
     // This deletes Consumer.
-    ParseAST(PP, MainFileID, Consumer, Stats);
+    ParseAST(PP, Consumer, Stats);
   }
   
   if (Stats) {
@@ -1062,8 +1061,7 @@
     exit (1);
   }
   
-  // FIXME: only work on consumers that do not require MainFileID.
-  Consumer->Initialize(*TU->getContext(), 0);
+  Consumer->Initialize(*TU->getContext());
   
   for (TranslationUnit::iterator I=TU->begin(), E=TU->end(); I!=E; ++I)
     Consumer->HandleTopLevelDecl(*I);

Modified: cfe/trunk/Driver/clang.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Driver/clang.h?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/Driver/clang.h (original)
+++ cfe/trunk/Driver/clang.h Wed Dec 19 16:51:13 2007
@@ -27,18 +27,17 @@
 class SourceManager;
 
 /// DoPrintPreprocessedInput - Implement -E mode.
-void DoPrintPreprocessedInput(unsigned MainFileID, Preprocessor &PP);
+void DoPrintPreprocessedInput(Preprocessor &PP);
 
 /// CreatePrintParserActionsAction - Return the actions implementation that
 /// implements the -parse-print-callbacks option.
 MinimalAction *CreatePrintParserActionsAction(IdentifierTable &);
 
 /// EmitLLVMFromASTs - Implement -emit-llvm, which generates llvm IR from C.
-void EmitLLVMFromASTs(Preprocessor &PP, unsigned MainFileID,
-                      bool PrintStats);
+void EmitLLVMFromASTs(Preprocessor &PP, bool PrintStats);
   
 /// CheckASTConsumer - Implement diagnostic checking for AST consumers.
-bool CheckASTConsumer(Preprocessor &PP, unsigned MainFileID, ASTConsumer* C);
+bool CheckASTConsumer(Preprocessor &PP, ASTConsumer* C);
 
 
 }  // end namespace clang

Modified: cfe/trunk/Lex/Preprocessor.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Lex/Preprocessor.cpp?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/Lex/Preprocessor.cpp (original)
+++ cfe/trunk/Lex/Preprocessor.cpp Wed Dec 19 16:51:13 2007
@@ -431,7 +431,10 @@
 
 /// EnterMainSourceFile - Enter the specified FileID as the main source file,
 /// which implicitly adds the builting defines etc.
-void Preprocessor::EnterMainSourceFile(unsigned MainFileID) {
+void Preprocessor::EnterMainSourceFile() {
+  
+  unsigned MainFileID = SourceMgr.getMainFileID();
+  
   // Enter the main file source buffer.
   EnterSourceFile(MainFileID, 0);
   

Modified: cfe/trunk/Sema/ASTStreamer.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/Sema/ASTStreamer.cpp?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/Sema/ASTStreamer.cpp (original)
+++ cfe/trunk/Sema/ASTStreamer.cpp Wed Dec 19 16:51:13 2007
@@ -25,9 +25,10 @@
   class ASTStreamer {
     Parser P;
   public:
-    ASTStreamer(Preprocessor &pp, ASTContext &ctxt, unsigned MainFileID)
+    ASTStreamer(Preprocessor &pp, ASTContext &ctxt)
       : P(pp, *new Sema(pp, ctxt)) {
-      pp.EnterMainSourceFile(MainFileID);
+        
+      pp.EnterMainSourceFile();
       
       // Initialize the parser.
       P.Initialize();
@@ -73,8 +74,7 @@
 /// ParseAST - Parse the entire file specified, notifying the ASTConsumer as
 /// the file is parsed.  This takes ownership of the ASTConsumer and
 /// ultimately deletes it.
-void clang::ParseAST(Preprocessor &PP, unsigned MainFileID, 
-                     ASTConsumer *Consumer, bool PrintStats) {
+void clang::ParseAST(Preprocessor &PP, ASTConsumer *Consumer, bool PrintStats) {
   // Collect global stats on Decls/Stmts (until we have a module streamer).
   if (PrintStats) {
     Decl::CollectingStats(true);
@@ -84,9 +84,9 @@
   ASTContext Context(PP.getSourceManager(), PP.getTargetInfo(),
                      PP.getIdentifierTable(), PP.getSelectorTable());
   
-  ASTStreamer Streamer(PP, Context, MainFileID);
+  ASTStreamer Streamer(PP, Context);
   
-  Consumer->Initialize(Context, MainFileID);
+  Consumer->Initialize(Context);
   
   while (Decl *D = Streamer.ReadTopLevelDecl())
     Consumer->HandleTopLevelDecl(D);

Modified: cfe/trunk/include/clang/AST/ASTConsumer.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/AST/ASTConsumer.h?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/include/clang/AST/ASTConsumer.h (original)
+++ cfe/trunk/include/clang/AST/ASTConsumer.h Wed Dec 19 16:51:13 2007
@@ -26,8 +26,8 @@
   virtual ~ASTConsumer();
   
   /// Initialize - This is called to initialize the consumer, providing the
-  /// ASTContext and the file ID of the primary file.
-  virtual void Initialize(ASTContext &Context, unsigned MainFileID) {}
+  /// ASTContext.
+  virtual void Initialize(ASTContext &Context) {}
   
   /// HandleTopLevelDecl - Handle the specified top-level declaration.  This is
   ///  called by HandleTopLevelDeclaration to process every top-level Decl*.

Modified: cfe/trunk/include/clang/Lex/Preprocessor.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Lex/Preprocessor.h?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/include/clang/Lex/Preprocessor.h (original)
+++ cfe/trunk/include/clang/Lex/Preprocessor.h Wed Dec 19 16:51:13 2007
@@ -217,8 +217,7 @@
 
   /// EnterMainSourceFile - Enter the specified FileID as the main source file,
   /// which implicitly adds the builtin defines etc.
-  void EnterMainSourceFile(unsigned CurFileID);
-  
+  void EnterMainSourceFile();  
   
   /// EnterSourceFile - Add a source file to the top of the include stack and
   /// start lexing tokens from it instead of the current buffer.  If isMainFile

Modified: cfe/trunk/include/clang/Sema/ASTStreamer.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/ASTStreamer.h?rev=45228&r1=45227&r2=45228&view=diff

==============================================================================
--- cfe/trunk/include/clang/Sema/ASTStreamer.h (original)
+++ cfe/trunk/include/clang/Sema/ASTStreamer.h Wed Dec 19 16:51:13 2007
@@ -23,8 +23,7 @@
   /// ParseAST - Parse the entire file specified, notifying the ASTConsumer as
   /// the file is parsed.  This takes ownership of the ASTConsumer and
   /// ultimately deletes it.
-  void ParseAST(Preprocessor &pp, unsigned MainFileID, 
-                ASTConsumer *C, bool PrintStats = false);
+  void ParseAST(Preprocessor &pp, ASTConsumer *C, bool PrintStats = false);
 }  // end namespace clang
 
 #endif





More information about the cfe-commits mailing list