From: Tobias Grosser Date: Thu, 17 Dec 2015 12:48:25 +0000 (+0000) Subject: DOTGraphTraits: Allow the decision to show a graph to consider the analysis X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=commitdiff_plain;h=0bc653bad8c7de4fc88b3cb989769285087447ea DOTGraphTraits: Allow the decision to show a graph to consider the analysis The method processFunction() is called to decide if a graph should be shown for a certain function. To allow DOTGraphTraitViewers to take this decision based on the analysis results for the given function, we forward a reference to the analysis result. This will be used by Polly to only visualize functions where interesting loop regions have been detected. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@255889 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/include/llvm/Analysis/DOTGraphTraitsPass.h b/include/llvm/Analysis/DOTGraphTraitsPass.h index 3b2c0cb2b15..ca50ee2f829 100644 --- a/include/llvm/Analysis/DOTGraphTraitsPass.h +++ b/include/llvm/Analysis/DOTGraphTraitsPass.h @@ -40,15 +40,19 @@ public: /// /// An implementation of this class my override this function to indicate that /// only certain functions should be viewed. - virtual bool processFunction(Function &F) { + /// + /// @param Analysis The current analysis result for this function. + virtual bool processFunction(Function &F, AnalysisT &Analysis) { return true; } bool runOnFunction(Function &F) override { - if (!processFunction(F)) + auto &Analysis = getAnalysis(); + + if (!processFunction(F, Analysis)) return false; - GraphT Graph = AnalysisGraphTraitsT::getGraph(&getAnalysis()); + GraphT Graph = AnalysisGraphTraitsT::getGraph(&Analysis); std::string GraphName = DOTGraphTraits::getGraphName(Graph); std::string Title = GraphName + " for '" + F.getName().str() + "' function"; @@ -78,15 +82,19 @@ public: /// /// An implementation of this class my override this function to indicate that /// only certain functions should be printed. - virtual bool processFunction(Function &F) { + /// + /// @param Analysis The current analysis result for this function. + virtual bool processFunction(Function &F, AnalysisT &Analysis) { return true; } bool runOnFunction(Function &F) override { - if (!processFunction(F)) + auto &Analysis = getAnalysis(); + + if (!processFunction(F, Analysis)) return false; - GraphT Graph = AnalysisGraphTraitsT::getGraph(&getAnalysis()); + GraphT Graph = AnalysisGraphTraitsT::getGraph(&Analysis); std::string Filename = Name + "." + F.getName().str() + ".dot"; std::error_code EC;