Subversion Repositories QNX 8.QNX8 LLVM/Clang compiler suite

Rev

Details | Last modification | View Log | RSS feed

Rev Author Line No. Line
14 pmbaty 1
//===- llvm/CodeGen/Spiller.h - Spiller -------------------------*- C++ -*-===//
2
//
3
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4
// See https://llvm.org/LICENSE.txt for license information.
5
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6
//
7
//===----------------------------------------------------------------------===//
8
 
9
#ifndef LLVM_CODEGEN_SPILLER_H
10
#define LLVM_CODEGEN_SPILLER_H
11
 
12
namespace llvm {
13
 
14
class LiveRangeEdit;
15
class MachineFunction;
16
class MachineFunctionPass;
17
class VirtRegMap;
18
class VirtRegAuxInfo;
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.
38
Spiller *createInlineSpiller(MachineFunctionPass &Pass, MachineFunction &MF,
39
                             VirtRegMap &VRM, VirtRegAuxInfo &VRAI);
40
 
41
} // end namespace llvm
42
 
43
#endif // LLVM_CODEGEN_SPILLER_H