X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FSpiller.h;h=59bc0ec6ae70f2c01b15d43457f3eb64af36771f;hb=e0a73ec0a982a4213f3de9860545d9bf2814593d;hp=cad054d744c4a7cf6fe2dcba1cada7bad1e9a8f1;hpb=f41538d1b54f55e8900394929b50f7ce3e61125f;p=oota-llvm.git diff --git a/lib/CodeGen/Spiller.h b/lib/CodeGen/Spiller.h index cad054d744c..59bc0ec6ae7 100644 --- a/lib/CodeGen/Spiller.h +++ b/lib/CodeGen/Spiller.h @@ -10,13 +10,14 @@ #ifndef LLVM_CODEGEN_SPILLER_H #define LLVM_CODEGEN_SPILLER_H -#include +#include "llvm/ADT/SmallVector.h" namespace llvm { + class LiveInterval; - class LiveIntervals; - class LiveStacks; class MachineFunction; + class MachineFunctionPass; + class SlotIndex; class VirtRegMap; /// Spiller interface. @@ -26,12 +27,24 @@ namespace llvm { class Spiller { public: virtual ~Spiller() = 0; - virtual std::vector spill(LiveInterval *li) = 0; + + /// spill - Spill the given live interval. The method used will depend on + /// the Spiller implementation selected. + /// + /// @param li The live interval to be spilled. + /// @param spillIs A list of intervals that are about to be spilled, + /// and so cannot be used for remat etc. + /// @param newIntervals The newly created intervals will be appended here. + virtual void spill(LiveInterval *li, + SmallVectorImpl &newIntervals, + SmallVectorImpl &spillIs) = 0; + }; /// Create and return a spiller object, as specified on the command line. - Spiller* createSpiller(MachineFunction *mf, LiveIntervals *li, - LiveStacks *ls, VirtRegMap *vrm); + Spiller* createSpiller(MachineFunctionPass &pass, + MachineFunction &mf, + VirtRegMap &vrm); } #endif