X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=include%2Fllvm%2FCodeGen%2FMachineFunctionPass.h;h=50a1f6e96217d923a4fa329c88b9aa1f2c9a1bc2;hb=00552e3875ee5f382db6c98286a241a7d0efe1b8;hp=6f7c216382a075a6788849862efde85f637ca64f;hpb=ad2afc2a421a0e41603d5eee412d4d8c77e9bc1c;p=oota-llvm.git diff --git a/include/llvm/CodeGen/MachineFunctionPass.h b/include/llvm/CodeGen/MachineFunctionPass.h index 6f7c216382a..50a1f6e9621 100644 --- a/include/llvm/CodeGen/MachineFunctionPass.h +++ b/include/llvm/CodeGen/MachineFunctionPass.h @@ -16,22 +16,22 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CODEGEN_MACHINE_FUNCTION_PASS_H -#define LLVM_CODEGEN_MACHINE_FUNCTION_PASS_H +#ifndef LLVM_CODEGEN_MACHINEFUNCTIONPASS_H +#define LLVM_CODEGEN_MACHINEFUNCTIONPASS_H #include "llvm/Pass.h" -#include "llvm/CodeGen/MachineFunction.h" namespace llvm { +class MachineFunction; + /// MachineFunctionPass - This class adapts the FunctionPass interface to /// allow convenient creation of passes that operate on the MachineFunction /// representation. Instead of overriding runOnFunction, subclasses /// override runOnMachineFunction. class MachineFunctionPass : public FunctionPass { protected: - explicit MachineFunctionPass(intptr_t ID) : FunctionPass(ID) {} - explicit MachineFunctionPass(void *ID) : FunctionPass(ID) {} + explicit MachineFunctionPass(char &ID) : FunctionPass(ID) {} /// runOnMachineFunction - This method must be overloaded to perform the /// desired machine code transformation or analysis. @@ -40,10 +40,18 @@ protected: /// getAnalysisUsage - Subclasses that override getAnalysisUsage /// must call this. - virtual void getAnalysisUsage(AnalysisUsage &AU) const; + /// + /// For MachineFunctionPasses, calling AU.preservesCFG() indicates that + /// the pass does not modify the MachineBasicBlock CFG. + /// + void getAnalysisUsage(AnalysisUsage &AU) const override; private: - bool runOnFunction(Function &F); + /// createPrinterPass - Get a machine function printer pass. + Pass *createPrinterPass(raw_ostream &O, + const std::string &Banner) const override; + + bool runOnFunction(Function &F) override; }; } // End llvm namespace