LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
MachineFunctionAnalysis.cpp
Go to the documentation of this file.
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 
18 using namespace llvm;
19 
21 
23  FunctionPass(ID), TM(tm), MF(0) {
25 }
26 
28  releaseMemory();
29  assert(!MF && "MachineFunctionAnalysis left initialized!");
30 }
31 
32 void MachineFunctionAnalysis::getAnalysisUsage(AnalysisUsage &AU) const {
33  AU.setPreservesAll();
35 }
36 
37 bool MachineFunctionAnalysis::doInitialization(Module &M) {
38  MachineModuleInfo *MMI = getAnalysisIfAvailable<MachineModuleInfo>();
39  assert(MMI && "MMI not around yet??");
40  MMI->setModule(&M);
41  NextFnNum = 0;
42  return false;
43 }
44 
45 
46 bool MachineFunctionAnalysis::runOnFunction(Function &F) {
47  assert(!MF && "MachineFunctionAnalysis already initialized!");
48  MF = new MachineFunction(&F, TM, NextFnNum++,
49  getAnalysis<MachineModuleInfo>(),
50  getAnalysisIfAvailable<GCModuleInfo>());
51  return false;
52 }
53 
54 void MachineFunctionAnalysis::releaseMemory() {
55  delete MF;
56  MF = 0;
57 }
static PassRegistry * getPassRegistry()
The main container class for the LLVM Intermediate Representation.
Definition: Module.h:112
F(f)
AnalysisUsage & addRequired()
ID
LLVM Calling Convention Representation.
Definition: CallingConv.h:26
void initializeMachineModuleInfoPass(PassRegistry &)
MachineFunctionAnalysis(const TargetMachine &tm)
void setModule(const Module *M)