+
+
+namespace {
+ class PromotePass : public MethodPass {
+ public:
+
+ // runOnMethod - To run this pass, first we calculate the alloca
+ // instructions that are safe for promotion, then we promote each one.
+ //
+ virtual bool runOnMethod(Method *M)
+ {
+ PromoteInstance inst(M, getAnalysis<DominanceFrontier>());
+ return (bool)inst;
+ }
+
+
+ // getAnalysisUsageInfo - We need dominance frontiers
+ //
+ virtual void getAnalysisUsageInfo(Pass::AnalysisSet &Requires,
+ Pass::AnalysisSet &Destroyed,
+ Pass::AnalysisSet &Provided) {
+ Requires.push_back(DominanceFrontier::ID);
+ }
+ };
+}
+
+
+// createPromoteMemoryToRegister - Provide an entry point to create this pass.
+//
+Pass *createPromoteMemoryToRegister() {
+ return new PromotePass();
+}
+
+