X-Git-Url: http://plrg.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FSpiller.h;h=08f99ec78adc70fa561f1a2332fc9a50322105f4;hb=912373de69045e491d6a301611ce31a2914a7d43;hp=730419b057ddfe001964838e956f8de8a6b621a9;hpb=cd35ed5153963c92333aa8d82692f1344d3ec911;p=oota-llvm.git diff --git a/lib/CodeGen/Spiller.h b/lib/CodeGen/Spiller.h index 730419b057d..08f99ec78ad 100644 --- a/lib/CodeGen/Spiller.h +++ b/lib/CodeGen/Spiller.h @@ -7,15 +7,14 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CODEGEN_SPILLER_H -#define LLVM_CODEGEN_SPILLER_H - -#include +#ifndef LLVM_LIB_CODEGEN_SPILLER_H +#define LLVM_LIB_CODEGEN_SPILLER_H namespace llvm { - struct LiveInterval; - class LiveIntervals; + + class LiveRangeEdit; class MachineFunction; + class MachineFunctionPass; class VirtRegMap; /// Spiller interface. @@ -23,14 +22,21 @@ namespace llvm { /// Implementations are utility classes which insert spill or remat code on /// demand. class Spiller { + virtual void anchor(); public: virtual ~Spiller() = 0; - virtual std::vector spill(LiveInterval *li) = 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(MachineFunction *mf, LiveIntervals *li, - 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