X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FSpiller.h;h=b7d5beaab1b26a583550da4955035f83eb4bec1a;hb=66f464ee266b31bb02058c49a5abe3a6b77f080b;hp=f17a0b55a072340b4296df6719aad316bcf1a8f5;hpb=e2b201bac382464496758d789cddefa50690fbe3;p=oota-llvm.git diff --git a/lib/CodeGen/Spiller.h b/lib/CodeGen/Spiller.h index f17a0b55a07..b7d5beaab1b 100644 --- a/lib/CodeGen/Spiller.h +++ b/lib/CodeGen/Spiller.h @@ -10,23 +10,38 @@ #ifndef LLVM_CODEGEN_SPILLER_H #define LLVM_CODEGEN_SPILLER_H -#include - 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(); public: virtual ~Spiller() = 0; - virtual std::vector spill(class 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(class MachineFunction *mf, class LiveIntervals *li, - class VirtRegMap *vrm); + 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