X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FCodeGen%2FSpiller.h;h=45d53eccea1453c8eede13fcc579ab17f512a632;hb=08f77a9f422e96110d8400e4caaf6a51be49a1f3;hp=7ec8e6d7ffb549da5753ec06dde033b52039113d;hpb=835ca07991c1b8ec47240b15417e1b2732480094;p=oota-llvm.git diff --git a/lib/CodeGen/Spiller.h b/lib/CodeGen/Spiller.h index 7ec8e6d7ffb..45d53eccea1 100644 --- a/lib/CodeGen/Spiller.h +++ b/lib/CodeGen/Spiller.h @@ -7,42 +7,41 @@ // //===----------------------------------------------------------------------===// -#ifndef LLVM_CODEGEN_SPILLER_H -#define LLVM_CODEGEN_SPILLER_H - -#include "llvm/ADT/SmallVector.h" -#include +#ifndef LLVM_LIB_CODEGEN_SPILLER_H +#define LLVM_LIB_CODEGEN_SPILLER_H namespace llvm { - class LiveInterval; - class LiveIntervals; - class LiveStacks; + class LiveRangeEdit; class MachineFunction; - class MachineInstr; - class MachineLoopInfo; + class MachineFunctionPass; class VirtRegMap; - class VNInfo; /// Spiller interface. /// /// Implementations are utility classes which insert spill or remat code on /// demand. class Spiller { + virtual void anchor(); public: virtual ~Spiller() = 0; - /// Spill the given live range. The method used will depend on the Spiller - /// implementation selected. - virtual std::vector spill(LiveInterval *li, - SmallVectorImpl &spillIs) = 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, - LiveStacks *ls, const MachineLoopInfo *loopInfo, - 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