Change allowsUnalignedMemoryAccesses to take type argument since some targets
[llvm/avr.git] / lib / CodeGen / Spiller.h
blob9c3900df0b57b2f555548403f2b75c4644beae22
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 //===----------------------------------------------------------------------===//
10 #ifndef LLVM_CODEGEN_SPILLER_H
11 #define LLVM_CODEGEN_SPILLER_H
13 #include <vector>
15 namespace llvm {
17 class LiveInterval;
18 class LiveIntervals;
19 class LiveStacks;
20 class MachineFunction;
21 class MachineInstr;
22 class VirtRegMap;
23 class VNInfo;
25 /// Spiller interface.
26 ///
27 /// Implementations are utility classes which insert spill or remat code on
28 /// demand.
29 class Spiller {
30 public:
31 virtual ~Spiller() = 0;
33 /// Spill the given live range. The method used will depend on the Spiller
34 /// implementation selected.
35 virtual std::vector<LiveInterval*> spill(LiveInterval *li) = 0;
37 /// Intra-block split.
38 virtual std::vector<LiveInterval*> intraBlockSplit(LiveInterval *li,
39 VNInfo *valno) = 0;
43 /// Create and return a spiller object, as specified on the command line.
44 Spiller* createSpiller(MachineFunction *mf, LiveIntervals *li,
45 LiveStacks *ls, VirtRegMap *vrm);
48 #endif