LLVM  4.0.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  class LiveIntervals;
20 
21  /// Spiller interface.
22  ///
23  /// Implementations are utility classes which insert spill or remat code on
24  /// demand.
25  class Spiller {
26  virtual void anchor();
27  public:
28  virtual ~Spiller() = 0;
29 
30  /// spill - Spill the LRE.getParent() live interval.
31  virtual void spill(LiveRangeEdit &LRE) = 0;
32  virtual void postOptimization(){};
33  };
34 
35  /// Create and return a spiller that will insert spill code directly instead
36  /// of deferring though VirtRegMap.
37  Spiller *createInlineSpiller(MachineFunctionPass &pass,
38  MachineFunction &mf,
39  VirtRegMap &vrm);
40 }
41 
42 #endif
Spiller interface.
Definition: Spiller.h:25
virtual void spill(LiveRangeEdit &LRE)=0
spill - Spill the LRE.getParent() live interval.
safe Safe Stack instrumentation pass
Definition: SafeStack.cpp:796
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:32