Add new optional getPassName() virtual function that a Pass can override
to make debugging output a lot nicer.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2395 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/tools/analyze/analyze.cpp b/tools/analyze/analyze.cpp
index 6de3738..7dbd3b7 100644
--- a/tools/analyze/analyze.cpp
+++ b/tools/analyze/analyze.cpp
@@ -83,6 +83,8 @@
const AnalysisID ID;
public:
PassPrinter(const string &M, AnalysisID id) : Message(M), ID(id) {}
+
+ const char *getPassName() const { return "IP Pass Printer"; }
virtual bool run(Module *M) {
std::cout << Message << "\n";
@@ -101,6 +103,8 @@
const AnalysisID ID;
public:
PassPrinter(const string &M, AnalysisID id) : Message(M), ID(id) {}
+
+ const char *getPassName() const { return "Function Pass Printer"; }
virtual bool runOnFunction(Function *F) {
std::cout << Message << " on function '" << F->getName() << "'\n";
@@ -134,6 +138,8 @@
}
struct InstForest : public FunctionPass {
+ const char *getPassName() const { return "InstForest Printer"; }
+
void doit(Function *F) {
std::cout << analysis::InstForest<char>(F);
}
@@ -144,6 +150,8 @@
};
struct IndVars : public FunctionPass {
+ const char *getPassName() const { return "IndVars Printer"; }
+
void doit(Function *F) {
LoopInfo &LI = getAnalysis<LoopInfo>();
for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I)
@@ -161,6 +169,8 @@
};
struct Exprs : public FunctionPass {
+ const char *getPassName() const { return "Expression Printer"; }
+
static void doit(Function *F) {
std::cout << "Classified expressions for: " << F->getName() << "\n";
for (inst_iterator I = inst_begin(F), E = inst_end(F); I != E; ++I) {
@@ -199,7 +209,7 @@
const string Message;
public:
PrinterPass(const string &M) : Message(M) {}
-
+
virtual bool runOnFunction(Function *F) {
std::cout << Message << " on function '" << F->getName() << "'\n";