[cfe-commits] r110958 - in /cfe/trunk: include/clang/Sema/ParseAST.h include/clang/Sema/Sema.h lib/Sema/ParseAST.cpp lib/Sema/Sema.cpp

John McCall rjmccall at apple.com
Thu Aug 12 14:39:05 PDT 2010


Author: rjmccall
Date: Thu Aug 12 16:39:05 2010
New Revision: 110958

URL: http://llvm.org/viewvc/llvm-project?rev=110958&view=rev
Log:
Fixing the build isn't good enough;  back out r110956 and r110953.


Modified:
    cfe/trunk/include/clang/Sema/ParseAST.h
    cfe/trunk/include/clang/Sema/Sema.h
    cfe/trunk/lib/Sema/ParseAST.cpp
    cfe/trunk/lib/Sema/Sema.cpp

Modified: cfe/trunk/include/clang/Sema/ParseAST.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/ParseAST.h?rev=110958&r1=110957&r2=110958&view=diff
==============================================================================
--- cfe/trunk/include/clang/Sema/ParseAST.h (original)
+++ cfe/trunk/include/clang/Sema/ParseAST.h Thu Aug 12 16:39:05 2010
@@ -38,10 +38,6 @@
                 bool CompleteTranslationUnit = true,
                 CodeCompleteConsumer *CompletionConsumer = 0);
 
-  /// \brief Parse the main file known to the preprocessor, producing an 
-  /// abstract syntax tree.
-  void ParseAST(Sema &S, bool PrintStats = false);
-  
 }  // end namespace clang
 
 #endif

Modified: cfe/trunk/include/clang/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Sema/Sema.h?rev=110958&r1=110957&r2=110958&view=diff
==============================================================================
--- cfe/trunk/include/clang/Sema/Sema.h (original)
+++ cfe/trunk/include/clang/Sema/Sema.h Thu Aug 12 16:39:05 2010
@@ -640,10 +640,7 @@
   Diagnostic &getDiagnostics() const { return Diags; }
   SourceManager &getSourceManager() const { return SourceMgr; }
   const TargetAttributesSema &getTargetAttributesSema() const;
-  Preprocessor &getPreprocessor() const { return PP; }
-  ASTContext &getASTContext() const { return Context; }
-  ASTConsumer &getASTConsumer() const { return Consumer; }
-  
+
   /// \brief Helper class that creates diagnostics with optional
   /// template instantiation stacks.
   ///

Modified: cfe/trunk/lib/Sema/ParseAST.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/ParseAST.cpp?rev=110958&r1=110957&r2=110958&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/ParseAST.cpp (original)
+++ cfe/trunk/lib/Sema/ParseAST.cpp Thu Aug 12 16:39:05 2010
@@ -56,54 +56,68 @@
                      ASTContext &Ctx, bool PrintStats,
                      bool CompleteTranslationUnit,
                      CodeCompleteConsumer *CompletionConsumer) {
-  Sema S(PP, Ctx, *Consumer, CompleteTranslationUnit, CompletionConsumer);
-  ParseAST(S, PrintStats);
-}
-
-void clang::ParseAST(Sema &S, bool PrintStats) {
   // Collect global stats on Decls/Stmts (until we have a module streamer).
   if (PrintStats) {
     Decl::CollectingStats(true);
     Stmt::CollectingStats(true);
   }
 
-  ASTConsumer *Consumer = &S.getASTConsumer();
+  Sema S(PP, Ctx, *Consumer, CompleteTranslationUnit, CompletionConsumer);
+  Parser P(PP, S);
+  PP.EnterMainSourceFile();
+
+  // Initialize the parser.
+  P.Initialize();
+
+  Consumer->Initialize(Ctx);
+
+  if (SemaConsumer *SC = dyn_cast<SemaConsumer>(Consumer))
+    SC->InitializeSema(S);
+
+  if (ExternalASTSource *External = Ctx.getExternalSource()) {
+    if (ExternalSemaSource *ExternalSema =
+          dyn_cast<ExternalSemaSource>(External))
+      ExternalSema->InitializeSema(S);
 
-  Parser P(S.getPreprocessor(), S);
-  S.getPreprocessor().EnterMainSourceFile();
-  
-  if (ExternalASTSource *External = S.getASTContext().getExternalSource())
     External->StartTranslationUnit(Consumer);
-  
+  }
+
   Parser::DeclGroupPtrTy ADecl;
-  
+
   while (!P.ParseTopLevelDecl(ADecl)) {  // Not end of file.
-                                         // If we got a null return and something *was* parsed, ignore it.  This
-                                         // is due to a top-level semicolon, an action override, or a parse error
-                                         // skipping something.
+    // If we got a null return and something *was* parsed, ignore it.  This
+    // is due to a top-level semicolon, an action override, or a parse error
+    // skipping something.
     if (ADecl)
       Consumer->HandleTopLevelDecl(ADecl.getAsVal<DeclGroupRef>());
   };
   // Check for any pending objective-c implementation decl.
   while ((ADecl = P.FinishPendingObjCActions()))
     Consumer->HandleTopLevelDecl(ADecl.getAsVal<DeclGroupRef>());
-  
+
   // Process any TopLevelDecls generated by #pragma weak.
   for (llvm::SmallVector<Decl*,2>::iterator
-       I = S.WeakTopLevelDecls().begin(),
-       E = S.WeakTopLevelDecls().end(); I != E; ++I)
+        I = S.WeakTopLevelDecls().begin(),
+        E = S.WeakTopLevelDecls().end(); I != E; ++I)
     Consumer->HandleTopLevelDecl(DeclGroupRef(*I));
-  
+
   // Dump record layouts, if requested.
-  if (S.getLangOptions().DumpRecordLayouts)
-    DumpRecordLayouts(S.getASTContext());
-  
-  Consumer->HandleTranslationUnit(S.getASTContext());
-  
+  if (PP.getLangOptions().DumpRecordLayouts)
+    DumpRecordLayouts(Ctx);
+
+  Consumer->HandleTranslationUnit(Ctx);
+
+  if (ExternalSemaSource *ESS =
+        dyn_cast_or_null<ExternalSemaSource>(Ctx.getExternalSource()))
+    ESS->ForgetSema();
+
+  if (SemaConsumer *SC = dyn_cast<SemaConsumer>(Consumer))
+    SC->ForgetSema();
+
   if (PrintStats) {
     fprintf(stderr, "\nSTATISTICS:\n");
     P.getActions().PrintStats();
-    S.getASTContext().PrintStats();
+    Ctx.PrintStats();
     Decl::PrintStats();
     Stmt::PrintStats();
     Consumer->PrintStats();

Modified: cfe/trunk/lib/Sema/Sema.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Sema/Sema.cpp?rev=110958&r1=110957&r2=110958&view=diff
==============================================================================
--- cfe/trunk/lib/Sema/Sema.cpp (original)
+++ cfe/trunk/lib/Sema/Sema.cpp Thu Aug 12 16:39:05 2010
@@ -18,7 +18,7 @@
 #include "llvm/ADT/SmallSet.h"
 #include "llvm/ADT/APFloat.h"
 #include "clang/Sema/ExternalSemaSource.h"
-#include "clang/Sema/SemaConsumer.h"
+#include "clang/AST/ASTConsumer.h"
 #include "clang/AST/ASTContext.h"
 #include "clang/AST/ASTDiagnostic.h"
 #include "clang/AST/DeclObjC.h"
@@ -143,18 +143,6 @@
 
   ExprEvalContexts.push_back(
                   ExpressionEvaluationContextRecord(PotentiallyEvaluated, 0));
-  
-  // Tell the AST consumer about this Sema object.
-  Consumer.Initialize(Context);
-  
-  // FIXME: Isn't this redundant with the initialization above?
-  if (SemaConsumer *SC = dyn_cast<SemaConsumer>(&Consumer))
-    SC->InitializeSema(*this);
-  
-  // Tell the external Sema source about this Sema object.
-  if (ExternalSemaSource *ExternalSema
-        = dyn_cast_or_null<ExternalSemaSource>(Context.getExternalSource()))
-    ExternalSema->InitializeSema(*this);
 }
 
 Sema::~Sema() {
@@ -163,15 +151,6 @@
   delete TheTargetAttributesSema;
   while (!FunctionScopes.empty())
     PopFunctionOrBlockScope();
-  
-  // Tell the SemaConsumer to forget about us; we're going out of scope.
-  if (SemaConsumer *SC = dyn_cast<SemaConsumer>(&Consumer))
-    SC->ForgetSema();
-
-  // Detach from the external Sema source.
-  if (ExternalSemaSource *ExternalSema
-      = dyn_cast_or_null<ExternalSemaSource>(Context.getExternalSource()))
-    ExternalSema->ForgetSema();
 }
 
 /// ImpCastExprToType - If Expr is not of type 'Type', insert an implicit cast.





More information about the cfe-commits mailing list