aboutsummaryrefslogtreecommitdiff
path: root/lib/Analysis/InductionVariable.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Analysis/InductionVariable.cpp')
-rw-r--r--lib/Analysis/InductionVariable.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/lib/Analysis/InductionVariable.cpp b/lib/Analysis/InductionVariable.cpp
index f7b72e5b9c..485586a018 100644
--- a/lib/Analysis/InductionVariable.cpp
+++ b/lib/Analysis/InductionVariable.cpp
@@ -23,6 +23,7 @@
#include "llvm/InstrTypes.h"
#include "llvm/Type.h"
#include "llvm/Constants.h"
+#include "llvm/Assembly/Writer.h"
using analysis::ExprType;
@@ -154,3 +155,24 @@ InductionVariable::InductionVariable(PHINode *P, LoopInfo *LoopInfo) {
// Classify the induction variable type now...
InductionType = InductionVariable::Classify(Start, Step, L);
}
+
+void InductionVariable::print(std::ostream &o) const {
+ switch (InductionType) {
+ case InductionVariable::Cannonical: o << "Cannonical "; break;
+ case InductionVariable::SimpleLinear: o << "SimpleLinear "; break;
+ case InductionVariable::Linear: o << "Linear "; break;
+ case InductionVariable::Unknown: o << "Unrecognized "; break;
+ }
+ o << "Induction Variable";
+ if (Phi) {
+ WriteAsOperand(o, Phi);
+ o << ":\n" << Phi;
+ } else {
+ o << "\n";
+ }
+ if (InductionType == InductionVariable::Unknown) return;
+
+ o << " Start ="; WriteAsOperand(o, Start);
+ o << " Step =" ; WriteAsOperand(o, Step);
+ o << "\n";
+}