//===- MachineFunctionInitializer.h - machine function initializer ---------===//
//
//                     The LLVM Compiler Infrastructure
//
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
//
//===----------------------------------------------------------------------===//
//
// This file declares an interface that allows custom machine function
// initialization.
//
//===----------------------------------------------------------------------===//

#ifndef LLVM_CODEGEN_MACHINEFUNCTIONINITIALIZER_H
#define LLVM_CODEGEN_MACHINEFUNCTIONINITIALIZER_H

namespace llvm {

class MachineFunction;

/// This interface provides a way to initialize machine functions after they are
/// created by the machine function analysis pass.
class MachineFunctionInitializer {
  virtual void anchor();

public:
  virtual ~MachineFunctionInitializer() {}

  /// Initialize the machine function.
  ///
  /// Return true if error occurred.
  virtual bool initializeMachineFunction(MachineFunction &MF) = 0;
};

} // end namespace llvm

#endif
