#include "llvm/Transforms/Pass.h"
class TargetData;
-class LowerAllocations : public ConcretePass {
+class LowerAllocations : public Pass {
Method *MallocMeth; // Methods in the module we are processing
Method *FreeMeth; // Initialized by doPassInitializationVirt
//
// This function is always successful.
//
- bool doPassInitializationVirt(Module *M);
+ bool doPassInitialization(Module *M);
// doPerMethodWork - This method does the actual work of converting
// instructions over, assuming that the pass has already been initialized.
//
- bool doPerMethodWorkVirt(Method *M);
+ bool doPerMethodWork(Method *M);
};
#endif
#include "llvm/Transforms/Pass.h"
-struct HoistPHIConstants : public StatelessPass<HoistPHIConstants> {
- // doPerMethodWork - This method does the work. Always successful.
- //
- static bool doPerMethodWork(Method *M);
+struct HoistPHIConstants : public Pass {
+ static bool doHoistPHIConstants(Method *M);
+
+
+ virtual bool doPerMethodWork(Method *M) { return doHoistPHIConstants(M); }
};
#endif
#include "llvm/Transforms/Pass.h"
#include "llvm/Assembly/Writer.h"
-class PrintModulePass : public ConcretePass {
+class PrintModulePass : public Pass {
string Banner; // String to print before each method
ostream *Out; // ostream to print on
bool DeleteStream; // Delete the ostream in our dtor?
// doPerMethodWork - This pass just prints a banner followed by the method as
// it's processed.
//
- bool doPerMethodWorkVirt(Method *M) {
+ bool doPerMethodWork(Method *M) {
(*Out) << Banner << M;
return false;
}