~ubuntu-branches/ubuntu/feisty/clamav/feisty

« back to all changes in this revision

Viewing changes to libclamav/c++/llvm/include/llvm/CodeGen/MachineFunctionPass.h

  • Committer: Bazaar Package Importer
  • Author(s): Kees Cook
  • Date: 2007-02-20 10:33:44 UTC
  • mto: This revision was merged to the branch mainline in revision 16.
  • Revision ID: james.westby@ubuntu.com-20070220103344-zgcu2psnx9d98fpa
Tags: upstream-0.90
ImportĀ upstreamĀ versionĀ 0.90

Show diffs side-by-side

added added

removed removed

Lines of Context:
1
 
//===-- MachineFunctionPass.h - Pass for 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 defines the MachineFunctionPass class.  MachineFunctionPass's are
11
 
// just FunctionPass's, except they operate on machine code as part of a code
12
 
// generator.  Because they operate on machine code, not the LLVM
13
 
// representation, MachineFunctionPass's are not allowed to modify the LLVM
14
 
// representation.  Due to this limitation, the MachineFunctionPass class takes
15
 
// care of declaring that no LLVM passes are invalidated.
16
 
//
17
 
//===----------------------------------------------------------------------===//
18
 
 
19
 
#ifndef LLVM_CODEGEN_MACHINE_FUNCTION_PASS_H
20
 
#define LLVM_CODEGEN_MACHINE_FUNCTION_PASS_H
21
 
 
22
 
#include "llvm/Pass.h"
23
 
 
24
 
namespace llvm {
25
 
 
26
 
class MachineFunction;
27
 
 
28
 
/// MachineFunctionPass - This class adapts the FunctionPass interface to
29
 
/// allow convenient creation of passes that operate on the MachineFunction
30
 
/// representation. Instead of overriding runOnFunction, subclasses
31
 
/// override runOnMachineFunction.
32
 
class MachineFunctionPass : public FunctionPass {
33
 
protected:
34
 
  explicit MachineFunctionPass(char &ID) : FunctionPass(ID) {}
35
 
 
36
 
  /// runOnMachineFunction - This method must be overloaded to perform the
37
 
  /// desired machine code transformation or analysis.
38
 
  ///
39
 
  virtual bool runOnMachineFunction(MachineFunction &MF) = 0;
40
 
 
41
 
  /// getAnalysisUsage - Subclasses that override getAnalysisUsage
42
 
  /// must call this.
43
 
  ///
44
 
  /// For MachineFunctionPasses, calling AU.preservesCFG() indicates that
45
 
  /// the pass does not modify the MachineBasicBlock CFG.
46
 
  ///
47
 
  virtual void getAnalysisUsage(AnalysisUsage &AU) const;
48
 
 
49
 
private:
50
 
  /// createPrinterPass - Get a machine function printer pass.
51
 
  virtual Pass *createPrinterPass(raw_ostream &O,
52
 
                                  const std::string &Banner) const;
53
 
 
54
 
  virtual bool runOnFunction(Function &F);
55
 
};
56
 
 
57
 
} // End llvm namespace
58
 
 
59
 
#endif