| //===-- 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. | |
| // | |
| //===----------------------------------------------------------------------===// | |
| #ifndef LLVM_CODEGEN_SPILLER_H | |
| #define LLVM_CODEGEN_SPILLER_H | |
| 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 { | |
| public: | |
| 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); | |
| } | |
| #endif |