- void print(std::ostream &OS) const {
- OS << "Classified expressions for: " << F->getName() << "\n";
- for (inst_iterator I = inst_begin(*F), E = inst_end(*F); I != E; ++I) {
- OS << *I;
-
- if ((*I)->getType() == Type::VoidTy) continue;
- ExprType R = ClassifyExpression(*I);
- if (R.Var == *I) continue; // Doesn't tell us anything
-
- OS << "\t\tExpr =";
- switch (R.ExprTy) {
- case ExprType::ScaledLinear:
- WriteAsOperand(OS << "(", (Value*)R.Scale) << " ) *";
- // fall through
- case ExprType::Linear:
- WriteAsOperand(OS << "(", R.Var) << " )";
- if (R.Offset == 0) break;
- else OS << " +";
- // fall through
- case ExprType::Constant:
- if (R.Offset) WriteAsOperand(OS, (Value*)R.Offset);
- else OS << " 0";
- break;
- }
- OS << "\n\n";
- }
- }
- virtual void getAnalysisUsage(AnalysisUsage &AU) const {