#define LLVM_CODEGEN_MACHINE_FUNCTION_PASS_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
explicit MachineFunctionPass(intptr_t ID) : FunctionPass(ID) {}
explicit MachineFunctionPass(void *ID) : FunctionPass(ID) {}
+ /// createPrinterPass - Get a machine function printer pass.
+ Pass *createPrinterPass(raw_ostream &O, const std::string &Banner) const;
+
/// runOnMachineFunction - This method must be overloaded to perform the
/// desired machine code transformation or analysis.
///
/// getAnalysisUsage - Subclasses that override getAnalysisUsage
/// must call this.
+ ///
+ /// For MachineFunctionPasses, calling AU.preservesCFG() indicates that
+ /// the pass does not modify the MachineBasicBlock CFG.
+ ///
virtual void getAnalysisUsage(AnalysisUsage &AU) const;
private: