LLVM  3.7.0
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_LIB_CODEGEN_SPILLER_H
11 #define LLVM_LIB_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 that will insert spill code directly instead
35  /// of deferring though VirtRegMap.
37  MachineFunction &mf,
38  VirtRegMap &vrm);
39 
40 }
41 
42 #endif
Spiller interface.
Definition: Spiller.h:24
virtual void spill(LiveRangeEdit &LRE)=0
spill - Spill the LRE.getParent() live interval.
MachineFunctionPass - This class adapts the FunctionPass interface to allow convenient creation of pa...
Two Address instruction pass
virtual ~Spiller()=0
Spiller * createInlineSpiller(MachineFunctionPass &pass, MachineFunction &mf, VirtRegMap &vrm)
Create and return a spiller that will insert spill code directly instead of deferring though VirtRegM...