MachineFunctionAnalysis.cpp revision 11d53c129fc9c2a4510605ec0a1696f58750af52
1//===-- MachineFunctionAnalysis.cpp ---------------------------------------===// 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 contains the definitions of the MachineFunctionAnalysis members. 11// 12//===----------------------------------------------------------------------===// 13 14#include "llvm/CodeGen/MachineFunctionAnalysis.h" 15#include "llvm/CodeGen/MachineFunction.h" 16#include "llvm/CodeGen/MachineModuleInfo.h" 17using namespace llvm; 18 19// Register this pass with PassInfo directly to avoid having to define 20// a default constructor. 21static PassInfo 22X("Machine Function Analysis", "machine-function-analysis", 23 intptr_t(&MachineFunctionAnalysis::ID), 0, 24 /*CFGOnly=*/false, /*is_analysis=*/true); 25 26char MachineFunctionAnalysis::ID = 0; 27 28MachineFunctionAnalysis::MachineFunctionAnalysis(const TargetMachine &tm, 29 CodeGenOpt::Level OL) : 30 FunctionPass(&ID), TM(tm), OptLevel(OL), MF(0) { 31} 32 33MachineFunctionAnalysis::~MachineFunctionAnalysis() { 34 releaseMemory(); 35 assert(!MF && "MachineFunctionAnalysis left initialized!"); 36} 37 38bool MachineFunctionAnalysis::runOnFunction(Function &F) { 39 assert(!MF && "MachineFunctionAnalysis already initialized!"); 40 MF = new MachineFunction(&F, TM, NextFnNum++, 41 getAnalysis<MachineModuleInfo>().getContext()); 42 return false; 43} 44 45void MachineFunctionAnalysis::releaseMemory() { 46 delete MF; 47 MF = 0; 48} 49 50void MachineFunctionAnalysis::getAnalysisUsage(AnalysisUsage &AU) const { 51 AU.setPreservesAll(); 52 AU.addRequired<MachineModuleInfo>(); 53} 54