LLVM API Documentation

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Spiller.h
Go to the documentation of this file.
1 //===-- llvm/CodeGen/Spiller.h - Spiller -*- 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 #ifndef LLVM_CODEGEN_SPILLER_H
11 #define LLVM_CODEGEN_SPILLER_H
12 
13 namespace llvm {
14 
15  class LiveRangeEdit;
16  class MachineFunction;
17  class MachineFunctionPass;
18  class VirtRegMap;
19 
20  /// Spiller interface.
21  ///
22  /// Implementations are utility classes which insert spill or remat code on
23  /// demand.
24  class Spiller {
25  virtual void anchor();
26  public:
27  virtual ~Spiller() = 0;
28 
29  /// spill - Spill the LRE.getParent() live interval.
30  virtual void spill(LiveRangeEdit &LRE) = 0;
31 
32  };
33 
34  /// Create and return a spiller object, as specified on the command line.
36  MachineFunction &mf,
37  VirtRegMap &vrm);
38 
39  /// Create and return a spiller that will insert spill code directly instead
40  /// of deferring though VirtRegMap.
42  MachineFunction &mf,
43  VirtRegMap &vrm);
44 
45 }
46 
47 #endif
virtual void spill(LiveRangeEdit &LRE)=0
spill - Spill the LRE.getParent() live interval.
Two Address instruction pass
virtual ~Spiller()=0
Definition: Spiller.cpp:45
Spiller * createSpiller(MachineFunctionPass &pass, MachineFunction &mf, VirtRegMap &vrm)
Create and return a spiller object, as specified on the command line.
Definition: Spiller.cpp:177
Spiller * createInlineSpiller(MachineFunctionPass &pass, MachineFunction &mf, VirtRegMap &vrm)