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
14#ifndef LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS_H
15#define LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS_H
16
17#include "llvm/Pass.h"
18
19namespace llvm {
20
21class MachineFunction;
22class TargetMachine;
23
24/// MachineFunctionAnalysis - This class is a Pass that manages a
25/// MachineFunction object.
26struct MachineFunctionAnalysis : public FunctionPass {
27private:
28  const TargetMachine &TM;
29  MachineFunction *MF;
30  unsigned NextFnNum;
31public:
32  static char ID;
33  explicit MachineFunctionAnalysis(const TargetMachine &tm);
34  ~MachineFunctionAnalysis();
35
36  MachineFunction &getMF() const { return *MF; }
37
38  const char* getPassName() const override {
39    return "Machine Function Analysis";
40  }
41
42private:
43  bool doInitialization(Module &M) override;
44  bool runOnFunction(Function &F) override;
45  void releaseMemory() override;
46  void getAnalysisUsage(AnalysisUsage &AU) const override;
47};
48
49} // End llvm namespace
50
51#endif
52