1ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman//===-- MachineFunctionAnalysis.h - Owner of MachineFunctions ----*-C++ -*-===// 2ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// 3ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// The LLVM Compiler Infrastructure 4ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// 5ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// This file is distributed under the University of Illinois Open Source 6ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// License. See LICENSE.TXT for details. 7ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// 8ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman//===----------------------------------------------------------------------===// 9ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// 10ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// This file declares the MachineFunctionAnalysis class. 11ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman// 12ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman//===----------------------------------------------------------------------===// 13ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 14674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#ifndef LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS_H 15674be02d525d4e24bc6943ed9274958c580bcfbcJakub Staszak#define LLVM_CODEGEN_MACHINEFUNCTIONANALYSIS_H 16ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 17ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman#include "llvm/Pass.h" 18ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 19ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohmannamespace llvm { 20ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 21ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohmanclass MachineFunction; 227dcb23a0522eb23c3a50f6c8249f10ccdf214993Jakub Staszakclass TargetMachine; 23ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 24ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman/// MachineFunctionAnalysis - This class is a Pass that manages a 25ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman/// MachineFunction object. 26ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohmanstruct MachineFunctionAnalysis : public FunctionPass { 27ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohmanprivate: 28ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman const TargetMachine &TM; 29ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman MachineFunction *MF; 30b84822fb7b64977c16e97b870891da1d6c9736feChris Lattner unsigned NextFnNum; 31ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohmanpublic: 32ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman static char ID; 33b95fc31aa2e5a0a0b9ee1909d1cb949577c5aa16Evan Cheng explicit MachineFunctionAnalysis(const TargetMachine &tm); 34f94083333c1702006c068b55526441b2bce1d45bDan Gohman ~MachineFunctionAnalysis(); 35ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 36ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman MachineFunction &getMF() const { return *MF; } 3736b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines 3836b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines const char* getPassName() const override { 3919af2ed415e4bda9579dab11d30c378c5560e3adOwen Anderson return "Machine Function Analysis"; 4019af2ed415e4bda9579dab11d30c378c5560e3adOwen Anderson } 41ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 42ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohmanprivate: 4336b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bool doInitialization(Module &M) override; 4436b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines bool runOnFunction(Function &F) override; 4536b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines void releaseMemory() override; 4636b56886974eae4f9c5ebc96befd3e7bfe5de338Stephen Hines void getAnalysisUsage(AnalysisUsage &AU) const override; 47ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman}; 48ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 49ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman} // End llvm namespace 50ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman 51ad2afc2a421a0e41603d5eee412d4d8c77e9bc1cDan Gohman#endif 52