Added clang option '--analyzer-display-progress' to indicate that the analyzer should output 'ANALYZE:' messages to display its progress on a source file.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@62875 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/Driver/AnalysisConsumer.cpp b/Driver/AnalysisConsumer.cpp
index 236cc1d..4dab9c7 100644
--- a/Driver/AnalysisConsumer.cpp
+++ b/Driver/AnalysisConsumer.cpp
@@ -86,6 +86,7 @@
bool AnalyzeAll;
AnalysisStores SM;
AnalysisDiagClients DC;
+ const bool DisplayProgress;
AnalysisConsumer(Diagnostic &diags, Preprocessor* pp,
PreprocessorFactory* ppf,
@@ -93,13 +94,15 @@
const std::string& fname,
const std::string& htmldir,
AnalysisStores sm, AnalysisDiagClients dc,
- bool visgraphviz, bool visubi, bool trim, bool analyzeAll)
+ bool visgraphviz, bool visubi, bool trim, bool analyzeAll,
+ bool displayProgress)
: VisGraphviz(visgraphviz), VisUbigraph(visubi), TrimGraph(trim),
LOpts(lopts), Diags(diags),
Ctx(0), PP(pp), PPF(ppf),
HTMLDir(htmldir),
FName(fname),
- AnalyzeAll(analyzeAll), SM(sm), DC(dc) {}
+ AnalyzeAll(analyzeAll), SM(sm), DC(dc),
+ DisplayProgress(displayProgress) {}
void addCodeAction(CodeAction action) {
FunctionActions.push_back(action);
@@ -143,13 +146,16 @@
ConstraintManagerCreator CreateConstraintMgr;
public:
- AnalysisManager(AnalysisConsumer& c, Decl* d, Stmt* b)
- : D(d), Body(b), TU(0), AScope(ScopeDecl), C(c), DisplayedFunction(false){
+ AnalysisManager(AnalysisConsumer& c, Decl* d, Stmt* b, bool displayProgress)
+ : D(d), Body(b), TU(0), AScope(ScopeDecl), C(c),
+ DisplayedFunction(!displayProgress) {
setManagerCreators();
}
- AnalysisManager(AnalysisConsumer& c, TranslationUnit* tu)
- : D(0), Body(0), TU(tu), AScope(ScopeTU), C(c), DisplayedFunction(false) {
+ AnalysisManager(AnalysisConsumer& c, TranslationUnit* tu,
+ bool displayProgress)
+ : D(0), Body(0), TU(tu), AScope(ScopeTU), C(c),
+ DisplayedFunction(!displayProgress) {
setManagerCreators();
}
@@ -347,7 +353,7 @@
void AnalysisConsumer::HandleTranslationUnit(TranslationUnit& TU) {
if(!TranslationUnitActions.empty()) {
- AnalysisManager mgr(*this, &TU);
+ AnalysisManager mgr(*this, &TU, DisplayProgress);
for (Actions::iterator I = TranslationUnitActions.begin(),
E = TranslationUnitActions.end(); I != E; ++I)
(*I)(mgr);
@@ -382,7 +388,7 @@
// Create an AnalysisManager that will manage the state for analyzing
// this method/function.
- AnalysisManager mgr(*this, D, Body);
+ AnalysisManager mgr(*this, D, Body, DisplayProgress);
// Dispatch on the actions.
for (Actions::iterator I = actions.begin(), E = actions.end(); I != E; ++I)
@@ -544,11 +550,13 @@
const std::string& htmldir,
bool VisGraphviz, bool VisUbi,
bool trim,
- bool analyzeAll) {
+ bool analyzeAll,
+ bool displayProgress) {
llvm::OwningPtr<AnalysisConsumer>
C(new AnalysisConsumer(diags, pp, ppf, lopts, fname, htmldir, SM, DC,
- VisGraphviz, VisUbi, trim, analyzeAll));
+ VisGraphviz, VisUbi, trim, analyzeAll,
+ displayProgress));
for ( ; Beg != End ; ++Beg)
switch (*Beg) {