Hook up the Plist diagnostic client to the driver.
Fix Plist output.


git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@58652 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/AnalysisConsumer.cpp b/Driver/AnalysisConsumer.cpp
index aa78337..5f338c8 100644
--- a/Driver/AnalysisConsumer.cpp
+++ b/Driver/AnalysisConsumer.cpp
@@ -75,20 +75,21 @@
     llvm::OwningPtr<PathDiagnosticClient> PD;
     bool AnalyzeAll;  
     AnalysisStores SM;
+    AnalysisDiagClients DC;
 
     AnalysisConsumer(Diagnostic &diags, Preprocessor* pp,
                      PreprocessorFactory* ppf,
                      const LangOptions& lopts,
                      const std::string& fname,
                      const std::string& htmldir,
-                     AnalysisStores sm,
+                     AnalysisStores sm, AnalysisDiagClients dc,
                      bool visgraphviz, bool visubi, bool trim, bool analyzeAll) 
       : VisGraphviz(visgraphviz), VisUbigraph(visubi), TrimGraph(trim),
         LOpts(lopts), Diags(diags),
         Ctx(0), PP(pp), PPF(ppf),
         HTMLDir(htmldir),
         FName(fname),
-        AnalyzeAll(analyzeAll), SM(sm) {}
+        AnalyzeAll(analyzeAll), SM(sm), DC(dc) {}
     
     void addCodeAction(CodeAction action) {
       FunctionActions.push_back(action);
@@ -165,9 +166,14 @@
     }
     
     virtual PathDiagnosticClient* getPathDiagnosticClient() {
-      if (C.PD.get() == 0 && !C.HTMLDir.empty())
-        C.PD.reset(CreateHTMLDiagnosticClient(C.HTMLDir, C.PP, C.PPF));
-      
+      if (C.PD.get() == 0 && !C.HTMLDir.empty()) {
+        switch (C.DC) {
+          default:
+#define ANALYSIS_DIAGNOSTICS(NAME, CMDFLAG, DESC, CREATEFN)\
+case PD_##NAME: C.PD.reset(CREATEFN(C.HTMLDir, C.PP, C.PPF)); break;
+#include "Analyses.def"
+        }
+      }
       return C.PD.get();      
     }
       
@@ -449,6 +455,7 @@
 
 ASTConsumer* clang::CreateAnalysisConsumer(Analyses* Beg, Analyses* End,
                                            AnalysisStores SM,
+                                           AnalysisDiagClients DC,
                                            Diagnostic &diags, Preprocessor* pp,
                                            PreprocessorFactory* ppf,
                                            const LangOptions& lopts,
@@ -459,7 +466,7 @@
                                            bool analyzeAll) {
   
   llvm::OwningPtr<AnalysisConsumer>
-  C(new AnalysisConsumer(diags, pp, ppf, lopts, fname, htmldir, SM,
+  C(new AnalysisConsumer(diags, pp, ppf, lopts, fname, htmldir, SM, DC,
                          VisGraphviz, VisUbi, trim, analyzeAll));
   
   for ( ; Beg != End ; ++Beg)