Home | History | Annotate | Download | only in CodeGen
      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 
     20 namespace llvm {
     21 
     22 class MachineFunction;
     23 
     24 /// MachineFunctionAnalysis - This class is a Pass that manages a
     25 /// MachineFunction object.
     26 struct MachineFunctionAnalysis : public FunctionPass {
     27 private:
     28   const TargetMachine &TM;
     29   CodeGenOpt::Level OptLevel;
     30   MachineFunction *MF;
     31   unsigned NextFnNum;
     32 public:
     33   static char ID;
     34   explicit MachineFunctionAnalysis(const TargetMachine &tm,
     35                                    CodeGenOpt::Level OL = CodeGenOpt::Default);
     36   ~MachineFunctionAnalysis();
     37 
     38   MachineFunction &getMF() const { return *MF; }
     39   CodeGenOpt::Level getOptLevel() const { return OptLevel; }
     40 
     41   virtual const char* getPassName() const {
     42     return "Machine Function Analysis";
     43   }
     44 
     45 private:
     46   virtual bool doInitialization(Module &M);
     47   virtual bool runOnFunction(Function &F);
     48   virtual void releaseMemory();
     49   virtual void getAnalysisUsage(AnalysisUsage &AU) const;
     50 };
     51 
     52 } // End llvm namespace
     53 
     54 #endif
     55