[cfe-commits] r86076 - in /cfe/trunk: include/clang/Frontend/ASTConsumers.h include/clang/Frontend/AnalysisConsumer.h include/clang/Frontend/PathDiagnosticClients.h include/clang/Frontend/Utils.h include/clang/Lex/Preprocessor.h include/clang/Rewrite/HTMLRewrite.h lib/Frontend/AnalysisConsumer.cpp lib/Frontend/HTMLDiagnostics.cpp lib/Frontend/HTMLPrint.cpp lib/Frontend/PlistDiagnostics.cpp lib/Lex/Preprocessor.cpp lib/Rewrite/HTMLRewrite.cpp tools/clang-cc/clang-cc.cpp

Daniel Dunbar daniel at zuster.org
Wed Nov 4 15:56:26 PST 2009


Author: ddunbar
Date: Wed Nov  4 17:56:25 2009
New Revision: 86076

URL: http://llvm.org/viewvc/llvm-project?rev=86076&view=rev
Log:
Kill PreprocessorFactory, which was both morally repugnant and totally unused.

Modified:
    cfe/trunk/include/clang/Frontend/ASTConsumers.h
    cfe/trunk/include/clang/Frontend/AnalysisConsumer.h
    cfe/trunk/include/clang/Frontend/PathDiagnosticClients.h
    cfe/trunk/include/clang/Frontend/Utils.h
    cfe/trunk/include/clang/Lex/Preprocessor.h
    cfe/trunk/include/clang/Rewrite/HTMLRewrite.h
    cfe/trunk/lib/Frontend/AnalysisConsumer.cpp
    cfe/trunk/lib/Frontend/HTMLDiagnostics.cpp
    cfe/trunk/lib/Frontend/HTMLPrint.cpp
    cfe/trunk/lib/Frontend/PlistDiagnostics.cpp
    cfe/trunk/lib/Lex/Preprocessor.cpp
    cfe/trunk/lib/Rewrite/HTMLRewrite.cpp
    cfe/trunk/tools/clang-cc/clang-cc.cpp

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

==============================================================================
--- cfe/trunk/include/clang/Frontend/ASTConsumers.h (original)
+++ cfe/trunk/include/clang/Frontend/ASTConsumers.h Wed Nov  4 17:56:25 2009
@@ -28,7 +28,6 @@
 class Diagnostic;
 class FileManager;
 class Preprocessor;
-class PreprocessorFactory;
 class CompileOptions;
 class LangOptions;
 
@@ -86,10 +85,11 @@
                                    llvm::raw_ostream *OS,
                                    llvm::LLVMContext& C);
 
-// HTML printer: uses the rewriter to convert source code to HTML with
-// syntax highlighting suitable for viewing in a web-browser.
-ASTConsumer* CreateHTMLPrinter(llvm::raw_ostream *OS, Diagnostic &D,
-                               Preprocessor *PP, PreprocessorFactory *PPF);
+/// CreateHTMLPrinter - Create an AST consumer which rewrites source code to
+/// HTML with syntax highlighting suitable for viewing in a web-browser.
+ASTConsumer *CreateHTMLPrinter(llvm::raw_ostream *OS, Preprocessor &PP,
+                               bool SyntaxHighlight = true,
+                               bool HighlightMacros = true);
 
 // PCH generator: generates a precompiled header file; this file can be
 // used later with the PCHReader (clang-cc option -include-pch)

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

==============================================================================
--- cfe/trunk/include/clang/Frontend/AnalysisConsumer.h (original)
+++ cfe/trunk/include/clang/Frontend/AnalysisConsumer.h Wed Nov  4 17:56:25 2009
@@ -19,7 +19,6 @@
 class ASTConsumer;
 class Diagnostic;
 class Preprocessor;
-class PreprocessorFactory;
 class LangOptions;
 
 /// Analysis - Set of available source code analyses.
@@ -70,7 +69,6 @@
 /// analysis passes.  (The set of analyses run is controlled by command-line
 /// options.)
 ASTConsumer* CreateAnalysisConsumer(Diagnostic &diags, Preprocessor *pp,
-                                    PreprocessorFactory *ppf,
                                     const LangOptions &lopts,
                                     const std::string &output,
                                     const AnalyzerOptions& Opts);

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

==============================================================================
--- cfe/trunk/include/clang/Frontend/PathDiagnosticClients.h (original)
+++ cfe/trunk/include/clang/Frontend/PathDiagnosticClients.h Wed Nov  4 17:56:25 2009
@@ -22,7 +22,6 @@
 
 class PathDiagnosticClient;
 class Preprocessor;
-class PreprocessorFactory;
 
 class PathDiagnosticClientFactory {
 public:
@@ -37,17 +36,14 @@
 
 PathDiagnosticClient*
 CreateHTMLDiagnosticClient(const std::string& prefix, Preprocessor* PP = 0,
-                           PreprocessorFactory* PPF = 0,
                            llvm::SmallVectorImpl<std::string>* FilesMade = 0);
 
 PathDiagnosticClientFactory*
 CreateHTMLDiagnosticClientFactory(const std::string& prefix,
-                                  Preprocessor* PP = 0,
-                                  PreprocessorFactory* PPF = 0);
+                                  Preprocessor* PP = 0);
 
 PathDiagnosticClient*
 CreatePlistDiagnosticClient(const std::string& prefix, Preprocessor* PP,
-                            PreprocessorFactory* PPF,
                             PathDiagnosticClientFactory *PF = 0);
 
 } // end clang namespace

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

==============================================================================
--- cfe/trunk/include/clang/Frontend/Utils.h (original)
+++ cfe/trunk/include/clang/Frontend/Utils.h Wed Nov  4 17:56:25 2009
@@ -30,7 +30,6 @@
 class ASTConsumer;
 class IdentifierTable;
 class SourceManager;
-class PreprocessorFactory;
 class LangOptions;
 class Decl;
 class Stmt;

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

==============================================================================
--- cfe/trunk/include/clang/Lex/Preprocessor.h (original)
+++ cfe/trunk/include/clang/Lex/Preprocessor.h Wed Nov  4 17:56:25 2009
@@ -831,14 +831,6 @@
   void HandleComment(SourceRange Comment);
 };
 
-/// PreprocessorFactory - A generic factory interface for lazily creating
-///  Preprocessor objects on-demand when they are needed.
-class PreprocessorFactory {
-public:
-  virtual ~PreprocessorFactory();
-  virtual Preprocessor* CreatePreprocessor() = 0;
-};
-
 /// \brief Abstract base class that describes a handler that will receive
 /// source ranges for each of the comments encountered in the source file.
 class CommentHandler {

Modified: cfe/trunk/include/clang/Rewrite/HTMLRewrite.h
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/include/clang/Rewrite/HTMLRewrite.h?rev=86076&r1=86075&r2=86076&view=diff

==============================================================================
--- cfe/trunk/include/clang/Rewrite/HTMLRewrite.h (original)
+++ cfe/trunk/include/clang/Rewrite/HTMLRewrite.h Wed Nov  4 17:56:25 2009
@@ -23,7 +23,6 @@
 class Rewriter;
 class RewriteBuffer;
 class Preprocessor;
-class PreprocessorFactory;
 
 namespace html {
 
@@ -75,7 +74,7 @@
   /// macro expansions.  This won't be perfectly perfect, but it will be
   /// reasonably close.
   void HighlightMacros(Rewriter &R, FileID FID, Preprocessor &PP);
-  void HighlightMacros(Rewriter &R, FileID FID, PreprocessorFactory &PPF);
+
 } // end html namespace
 } // end clang namespace
 

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

==============================================================================
--- cfe/trunk/lib/Frontend/AnalysisConsumer.cpp (original)
+++ cfe/trunk/lib/Frontend/AnalysisConsumer.cpp Wed Nov  4 17:56:25 2009
@@ -52,12 +52,11 @@
 //===----------------------------------------------------------------------===//
 
 static PathDiagnosticClient*
-CreatePlistHTMLDiagnosticClient(const std::string& prefix, Preprocessor* PP,
-                            PreprocessorFactory* PPF) {
+CreatePlistHTMLDiagnosticClient(const std::string& prefix, Preprocessor* PP) {
   llvm::sys::Path F(prefix);
   PathDiagnosticClientFactory *PF =
-    CreateHTMLDiagnosticClientFactory(F.getDirname(), PP, PPF);
-  return CreatePlistDiagnosticClient(prefix, PP, PPF, PF);
+    CreateHTMLDiagnosticClientFactory(F.getDirname(), PP);
+  return CreatePlistDiagnosticClient(prefix, PP, PF);
 }
 
 //===----------------------------------------------------------------------===//
@@ -78,7 +77,6 @@
     Diagnostic &Diags;
     ASTContext* Ctx;
     Preprocessor* PP;
-    PreprocessorFactory* PPF;
     const std::string OutDir;
     AnalyzerOptions Opts;
 
@@ -92,13 +90,11 @@
     llvm::OwningPtr<AnalysisManager> Mgr;
 
     AnalysisConsumer(Diagnostic &diags, Preprocessor* pp,
-                     PreprocessorFactory* ppf,
                      const LangOptions& lopts,
                      const std::string& outdir,
                      const AnalyzerOptions& opts)
-      : LOpts(lopts), Diags(diags),
-        Ctx(0), PP(pp), PPF(ppf),
-        OutDir(outdir), Opts(opts), PD(0) {
+      : LOpts(lopts), Diags(diags), Ctx(0), PP(pp), OutDir(outdir),
+        Opts(opts), PD(0) {
       DigestAnalyzerOptions();
     }
 
@@ -108,7 +104,7 @@
         switch (Opts.AnalysisDiagOpt) {
         default:
 #define ANALYSIS_DIAGNOSTICS(NAME, CMDFLAG, DESC, CREATEFN, AUTOCREATE) \
-          case PD_##NAME: PD = CREATEFN(OutDir, PP, PPF); break;
+          case PD_##NAME: PD = CREATEFN(OutDir, PP); break;
 #include "clang/Frontend/Analyses.def"
         }
       }
@@ -444,12 +440,11 @@
 //===----------------------------------------------------------------------===//
 
 ASTConsumer* clang::CreateAnalysisConsumer(Diagnostic &diags, Preprocessor* pp,
-                                           PreprocessorFactory* ppf,
                                            const LangOptions& lopts,
                                            const std::string& OutDir,
                                            const AnalyzerOptions& Opts) {
 
-  llvm::OwningPtr<AnalysisConsumer> C(new AnalysisConsumer(diags, pp, ppf,
+  llvm::OwningPtr<AnalysisConsumer> C(new AnalysisConsumer(diags, pp,
                                                            lopts, OutDir,
                                                            Opts));
 

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

==============================================================================
--- cfe/trunk/lib/Frontend/HTMLDiagnostics.cpp (original)
+++ cfe/trunk/lib/Frontend/HTMLDiagnostics.cpp Wed Nov  4 17:56:25 2009
@@ -77,7 +77,6 @@
 
 PathDiagnosticClient*
 clang::CreateHTMLDiagnosticClient(const std::string& prefix, Preprocessor* PP,
-                                  PreprocessorFactory*,
                                   llvm::SmallVectorImpl<std::string>* FilesMade)
 {
   return new HTMLDiagnostics(prefix, PP, FilesMade);
@@ -111,8 +110,7 @@
 
 PathDiagnosticClientFactory*
 clang::CreateHTMLDiagnosticClientFactory(const std::string& prefix,
-                                         Preprocessor* PP,
-                                         PreprocessorFactory*) {
+                                         Preprocessor* PP) {
   return new HTMLDiagnosticsFactory(prefix, PP);
 }
 
@@ -216,12 +214,6 @@
   // for example.
 
   if (PP) html::SyntaxHighlight(R, FID, *PP);
-
-  // FIXME: We eventually want to use PPF to create a fresh Preprocessor,
-  //  once we have worked out the bugs.
-  //
-  // if (PPF) html::HighlightMacros(R, FID, *PPF);
-  //
   if (PP) html::HighlightMacros(R, FID, *PP);
 
   // Get the full directory name of the analyzed file.

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

==============================================================================
--- cfe/trunk/lib/Frontend/HTMLPrint.cpp (original)
+++ cfe/trunk/lib/Frontend/HTMLPrint.cpp Wed Nov  4 17:56:25 2009
@@ -13,13 +13,14 @@
 
 #include "clang/Frontend/ASTConsumers.h"
 #include "clang/AST/ASTConsumer.h"
+#include "clang/AST/ASTContext.h"
 #include "clang/AST/Decl.h"
-#include "clang/Rewrite/Rewriter.h"
-#include "clang/Rewrite/HTMLRewrite.h"
 #include "clang/Basic/Diagnostic.h"
-#include "clang/Basic/SourceManager.h"
 #include "clang/Basic/FileManager.h"
-#include "clang/AST/ASTContext.h"
+#include "clang/Basic/SourceManager.h"
+#include "clang/Lex/Preprocessor.h"
+#include "clang/Rewrite/HTMLRewrite.h"
+#include "clang/Rewrite/Rewriter.h"
 #include "llvm/Support/MemoryBuffer.h"
 #include "llvm/Support/raw_ostream.h"
 using namespace clang;
@@ -32,13 +33,14 @@
   class HTMLPrinter : public ASTConsumer {
     Rewriter R;
     llvm::raw_ostream *Out;
-    Diagnostic &Diags;
-    Preprocessor *PP;
-    PreprocessorFactory *PPF;
+    Preprocessor &PP;
+    bool SyntaxHighlight, HighlightMacros;
+
   public:
-    HTMLPrinter(llvm::raw_ostream *OS, Diagnostic &D, Preprocessor *pp,
-                PreprocessorFactory* ppf)
-      : Out(OS), Diags(D), PP(pp), PPF(ppf) {}
+    HTMLPrinter(llvm::raw_ostream *OS, Preprocessor &pp,
+                bool _SyntaxHighlight, bool _HighlightMacros)
+      : Out(OS), PP(pp), SyntaxHighlight(_SyntaxHighlight),
+        HighlightMacros(_HighlightMacros) {}
     virtual ~HTMLPrinter();
 
     void Initialize(ASTContext &context);
@@ -46,10 +48,10 @@
 }
 
 ASTConsumer* clang::CreateHTMLPrinter(llvm::raw_ostream *OS,
-                                      Diagnostic &D, Preprocessor *PP,
-                                      PreprocessorFactory* PPF) {
-
-  return new HTMLPrinter(OS, D, PP, PPF);
+                                      Preprocessor &PP,
+                                      bool SyntaxHighlight,
+                                      bool HighlightMacros) {
+  return new HTMLPrinter(OS, PP, SyntaxHighlight, HighlightMacros);
 }
 
 void HTMLPrinter::Initialize(ASTContext &context) {
@@ -57,7 +59,7 @@
 }
 
 HTMLPrinter::~HTMLPrinter() {
-  if (Diags.hasErrorOccurred())
+  if (PP.getDiagnostics().hasErrorOccurred())
     return;
 
   // Format the file.
@@ -79,8 +81,8 @@
   // We might not have a preprocessor if we come from a deserialized AST file,
   // for example.
 
-  if (PP) html::SyntaxHighlight(R, FID, *PP);
-  if (PPF) html::HighlightMacros(R, FID, *PP);
+  if (SyntaxHighlight) html::SyntaxHighlight(R, FID, PP);
+  if (HighlightMacros) html::HighlightMacros(R, FID, PP);
   html::EscapeText(R, FID, false, true);
 
   // Emit the HTML.

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

==============================================================================
--- cfe/trunk/lib/Frontend/PlistDiagnostics.cpp (original)
+++ cfe/trunk/lib/Frontend/PlistDiagnostics.cpp Wed Nov  4 17:56:25 2009
@@ -29,7 +29,6 @@
 
 namespace clang {
   class Preprocessor;
-  class PreprocessorFactory;
 }
 
 namespace {
@@ -63,8 +62,7 @@
 }
 
 PathDiagnosticClient*
-clang::CreatePlistDiagnosticClient(const std::string& s,
-                                   Preprocessor *PP, PreprocessorFactory*,
+clang::CreatePlistDiagnosticClient(const std::string& s, Preprocessor *PP,
                                    PathDiagnosticClientFactory *PF) {
   return new PlistDiagnostics(s, PP->getLangOptions(), PF);
 }

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

==============================================================================
--- cfe/trunk/lib/Lex/Preprocessor.cpp (original)
+++ cfe/trunk/lib/Lex/Preprocessor.cpp Wed Nov  4 17:56:25 2009
@@ -43,8 +43,6 @@
 
 //===----------------------------------------------------------------------===//
 
-PreprocessorFactory::~PreprocessorFactory() {}
-
 Preprocessor::Preprocessor(Diagnostic &diags, const LangOptions &opts,
                            TargetInfo &target, SourceManager &SM,
                            HeaderSearch &Headers,

Modified: cfe/trunk/lib/Rewrite/HTMLRewrite.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/Rewrite/HTMLRewrite.cpp?rev=86076&r1=86075&r2=86076&view=diff

==============================================================================
--- cfe/trunk/lib/Rewrite/HTMLRewrite.cpp (original)
+++ cfe/trunk/lib/Rewrite/HTMLRewrite.cpp Wed Nov  4 17:56:25 2009
@@ -564,10 +564,3 @@
   // Restore diagnostics object back to its own thing.
   PP.setDiagnostics(*OldDiags);
 }
-
-void html::HighlightMacros(Rewriter &R, FileID FID,
-                           PreprocessorFactory &PPF) {
-
-  llvm::OwningPtr<Preprocessor> PP(PPF.CreatePreprocessor());
-  HighlightMacros(R, FID, *PP);
-}

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=86076&r1=86075&r2=86076&view=diff

==============================================================================
--- cfe/trunk/tools/clang-cc/clang-cc.cpp (original)
+++ cfe/trunk/tools/clang-cc/clang-cc.cpp Wed Nov  4 17:56:25 2009
@@ -1195,67 +1195,48 @@
 }
 
 //===----------------------------------------------------------------------===//
-// Driver PreprocessorFactory - For lazily generating preprocessors ...
+// Preprocessor construction
 //===----------------------------------------------------------------------===//
 
-namespace {
-class VISIBILITY_HIDDEN DriverPreprocessorFactory : public PreprocessorFactory {
-  Diagnostic        &Diags;
-  const LangOptions &LangInfo;
-  TargetInfo        &Target;
-  SourceManager     &SourceMgr;
-  HeaderSearch      &HeaderInfo;
-
-public:
-  DriverPreprocessorFactory(Diagnostic &diags, const LangOptions &opts,
-                            TargetInfo &target, SourceManager &SM,
-                            HeaderSearch &Headers)
-  : Diags(diags), LangInfo(opts), Target(target),
-    SourceMgr(SM), HeaderInfo(Headers) {}
-
-
-  virtual ~DriverPreprocessorFactory() {}
-
-  virtual Preprocessor* CreatePreprocessor() {
-    llvm::OwningPtr<PTHManager> PTHMgr;
+static Preprocessor *
+CreatePreprocessor(Diagnostic &Diags,const LangOptions &LangInfo,
+                   TargetInfo &Target, SourceManager &SourceMgr,
+                   HeaderSearch &HeaderInfo) {
+  PTHManager *PTHMgr = 0;
+  if (!TokenCache.empty() && !ImplicitIncludePTH.empty()) {
+    fprintf(stderr, "error: cannot use both -token-cache and -include-pth "
+            "options\n");
+    exit(1);
+  }
 
-    if (!TokenCache.empty() && !ImplicitIncludePTH.empty()) {
-      fprintf(stderr, "error: cannot use both -token-cache and -include-pth "
-                      "options\n");
-      exit(1);
-    }
+  // Use PTH?
+  if (!TokenCache.empty() || !ImplicitIncludePTH.empty()) {
+    const std::string& x = TokenCache.empty() ? ImplicitIncludePTH:TokenCache;
+    PTHMgr = PTHManager::Create(x, &Diags,
+                                TokenCache.empty() ? Diagnostic::Error
+                                : Diagnostic::Warning);
+  }
 
-    // Use PTH?
-    if (!TokenCache.empty() || !ImplicitIncludePTH.empty()) {
-      const std::string& x = TokenCache.empty() ? ImplicitIncludePTH:TokenCache;
-      PTHMgr.reset(PTHManager::Create(x, &Diags,
-                                      TokenCache.empty() ? Diagnostic::Error
-                                                        : Diagnostic::Warning));
-    }
+  if (Diags.hasErrorOccurred())
+    exit(1);
 
-    if (Diags.hasErrorOccurred())
-      exit(1);
+  // Create the Preprocessor.
+  Preprocessor *PP = new Preprocessor(Diags, LangInfo, Target,
+                                      SourceMgr, HeaderInfo, PTHMgr);
 
-    // Create the Preprocessor.
-    llvm::OwningPtr<Preprocessor> PP(new Preprocessor(Diags, LangInfo, Target,
-                                                      SourceMgr, HeaderInfo,
-                                                      PTHMgr.get()));
-
-    // Note that this is different then passing PTHMgr to Preprocessor's ctor.
-    // That argument is used as the IdentifierInfoLookup argument to
-    // IdentifierTable's ctor.
-    if (PTHMgr) {
-      PTHMgr->setPreprocessor(PP.get());
-      PP->setPTHManager(PTHMgr.take());
-    }
+  // Note that this is different then passing PTHMgr to Preprocessor's ctor.
+  // That argument is used as the IdentifierInfoLookup argument to
+  // IdentifierTable's ctor.
+  if (PTHMgr) {
+    PTHMgr->setPreprocessor(PP);
+    PP->setPTHManager(PTHMgr);
+  }
 
-    PreprocessorInitOptions InitOpts;
-    InitializePreprocessorInitOptions(InitOpts);
-    InitializePreprocessor(*PP, InitOpts);
+  PreprocessorInitOptions InitOpts;
+  InitializePreprocessorInitOptions(InitOpts);
+  InitializePreprocessor(*PP, InitOpts);
 
-    return PP.take();
-  }
-};
+  return PP;
 }
 
 //===----------------------------------------------------------------------===//
@@ -1723,8 +1704,8 @@
 
 /// ProcessInputFile - Process a single input file with the specified state.
 ///
-static void ProcessInputFile(Preprocessor &PP, PreprocessorFactory &PPF,
-                             const std::string &InFile, ProgActions PA,
+static void ProcessInputFile(Preprocessor &PP, const std::string &InFile,
+                             ProgActions PA,
                              const llvm::StringMap<bool> &Features,
                              llvm::LLVMContext& Context) {
   llvm::OwningPtr<llvm::raw_ostream> OS;
@@ -1749,11 +1730,11 @@
 
   case EmitHTML:
     OS.reset(ComputeOutFile(InFile, 0, true, OutPath));
-    Consumer.reset(CreateHTMLPrinter(OS.get(), PP.getDiagnostics(), &PP, &PPF));
+    Consumer.reset(CreateHTMLPrinter(OS.get(), PP));
     break;
 
   case RunAnalysis:
-    Consumer.reset(CreateAnalysisConsumer(PP.getDiagnostics(), &PP, &PPF,
+    Consumer.reset(CreateAnalysisConsumer(PP.getDiagnostics(), &PP,
                                           PP.getLangOptions(), OutputFile,
                                           ReadAnalyzerOptions()));
     break;
@@ -2284,10 +2265,9 @@
     InitializeIncludePaths(argv[0], HeaderInfo, FileMgr, LangInfo, Triple);
 
     // Set up the preprocessor with these options.
-    DriverPreprocessorFactory PPFactory(Diags, LangInfo, *Target,
-                                        *SourceMgr.get(), HeaderInfo);
-
-    llvm::OwningPtr<Preprocessor> PP(PPFactory.CreatePreprocessor());
+    llvm::OwningPtr<Preprocessor> PP(CreatePreprocessor(Diags, LangInfo,
+                                                        *Target, *SourceMgr,
+                                                        HeaderInfo));
     if (!PP)
       continue;
 
@@ -2324,7 +2304,7 @@
       ((PathDiagnosticClient*)DiagClient.get())->SetPreprocessor(PP.get());
 
     // Process the source file.
-    ProcessInputFile(*PP, PPFactory, InFile, ProgAction, Features, Context);
+    ProcessInputFile(*PP, InFile, ProgAction, Features, Context);
 
     HeaderInfo.ClearFileInfo();
     DiagClient->setLangOptions(0);





More information about the cfe-commits mailing list