Line data Source code
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 193996 : 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 0 : virtual void postOptimization() {}
34 : };
35 :
36 : /// Create and return a spiller that will insert spill code directly instead
37 : /// of deferring though VirtRegMap.
38 : Spiller *createInlineSpiller(MachineFunctionPass &pass,
39 : MachineFunction &mf,
40 : VirtRegMap &vrm);
41 :
42 : } // end namespace llvm
43 :
44 : #endif // LLVM_LIB_CODEGEN_SPILLER_H
|