blob: b7d5beaab1b26a583550da4955035f83eb4bec1a [file] [log] [blame]
//===-- llvm/CodeGen/Spiller.h - Spiller -*- C++ -*------------------------===//
// The LLVM Compiler Infrastructure
// This file is distributed under the University of Illinois Open Source
// License. See LICENSE.TXT for details.
namespace llvm {
class LiveRangeEdit;
class MachineFunction;
class MachineFunctionPass;
class VirtRegMap;
/// Spiller interface.
/// Implementations are utility classes which insert spill or remat code on
/// demand.
class Spiller {
virtual void anchor();
virtual ~Spiller() = 0;
/// spill - Spill the LRE.getParent() live interval.
virtual void spill(LiveRangeEdit &LRE) = 0;
/// Create and return a spiller object, as specified on the command line.
Spiller* createSpiller(MachineFunctionPass &pass,
MachineFunction &mf,
VirtRegMap &vrm);
/// Create and return a spiller that will insert spill code directly instead
/// of deferring though VirtRegMap.
Spiller *createInlineSpiller(MachineFunctionPass &pass,
MachineFunction &mf,
VirtRegMap &vrm);