MachineFunctionAnalysis.h revision 933c762371fe8cc6e2ef5d00d6866f4924852fed
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_MACHINE_FUNCTION_ANALYSIS_H
15#define LLVM_CODEGEN_MACHINE_FUNCTION_ANALYSIS_H
16
17#include "llvm/Pass.h"
18#include "llvm/Target/TargetMachine.h"
19
20namespace llvm {
21
22class MachineFunction;
23
24/// MachineFunctionAnalysis - This class is a Pass that manages a
25/// MachineFunction object.
26struct MachineFunctionAnalysis : public FunctionPass {
27private:
28  const TargetMachine &TM;
29  CodeGenOpt::Level OptLevel;
30  MachineFunction *MF;
31
32public:
33  static char ID;
34  explicit MachineFunctionAnalysis(TargetMachine &tm,
35                                   CodeGenOpt::Level OL = CodeGenOpt::Default);
36
37
38  MachineFunction &getMF() const { return *MF; }
39  CodeGenOpt::Level getOptLevel() const { return OptLevel; }
40
41private:
42  virtual bool runOnFunction(Function &F);
43  virtual void releaseMemory();
44  virtual void getAnalysisUsage(AnalysisUsage &AU) const;
45};
46
47} // End llvm namespace
48
49#endif
50