MachineFunctionAnalysis.h 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. //===-- MachineFunctionAnalysis.h - Owner of MachineFunctions ----*-C++ -*-===//
  2. //
  3. // The LLVM Compiler Infrastructure
  4. //
  5. // This file is distributed under the University of Illinois Open Source
  6. // License. See LICENSE.TXT for details.
  7. //
  8. //===----------------------------------------------------------------------===//
  9. //
  10. // This file declares the MachineFunctionAnalysis class.
  11. //
  12. //===----------------------------------------------------------------------===//
  13. #ifndef LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS_H
  14. #define LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS_H
  15. #include "llvm/Pass.h"
  16. namespace llvm {
  17. class MachineFunction;
  18. class MachineFunctionInitializer;
  19. class TargetMachine;
  20. /// MachineFunctionAnalysis - This class is a Pass that manages a
  21. /// MachineFunction object.
  22. struct MachineFunctionAnalysis : public FunctionPass {
  23. private:
  24. const TargetMachine &TM;
  25. MachineFunction *MF;
  26. unsigned NextFnNum;
  27. MachineFunctionInitializer *MFInitializer;
  28. public:
  29. static char ID;
  30. explicit MachineFunctionAnalysis(const TargetMachine &tm,
  31. MachineFunctionInitializer *MFInitializer);
  32. ~MachineFunctionAnalysis() override;
  33. MachineFunction &getMF() const { return *MF; }
  34. const char* getPassName() const override {
  35. return "Machine Function Analysis";
  36. }
  37. private:
  38. bool doInitialization(Module &M) override;
  39. bool runOnFunction(Function &F) override;
  40. void releaseMemory() override;
  41. void getAnalysisUsage(AnalysisUsage &AU) const override;
  42. };
  43. } // End llvm namespace
  44. #endif