LLVM  8.0.0svn
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 
27  public:
28  virtual ~Spiller() = 0;
29 
30  /// spill - Spill the LRE.getParent() live interval.
31  virtual void spill(LiveRangeEdit &LRE) = 0;
32 
33  virtual void postOptimization() {}
34  };
35 
36  /// Create and return a spiller that will insert spill code directly instead
37  /// of deferring though VirtRegMap.
39  MachineFunction &mf,
40  VirtRegMap &vrm);
41 
42 } // end namespace llvm
43 
44 #endif // LLVM_LIB_CODEGEN_SPILLER_H
Safe Stack instrumentation pass
Definition: SafeStack.cpp:907
This class represents lattice values for constants.
Definition: AllocatorList.h:24
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...
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...
virtual void postOptimization()
Definition: Spiller.h:33