summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/Spiller.h
diff options
context:
space:
mode:
authorLang Hames <lhames@gmail.com>2009-12-09 05:39:12 +0000
committerLang Hames <lhames@gmail.com>2009-12-09 05:39:12 +0000
commit1ab2b49e6d5a2cf417c7b8b0c9cfebf8e6cbc544 (patch)
tree50cf317d33a7b91649b8f7307a10bc6d2aa647e5 /llvm/lib/CodeGen/Spiller.h
parentf7195532ee8ed560daf933535d86c1fe22f5bd65 (diff)
downloadbcm5719-llvm-1ab2b49e6d5a2cf417c7b8b0c9cfebf8e6cbc544.tar.gz
bcm5719-llvm-1ab2b49e6d5a2cf417c7b8b0c9cfebf8e6cbc544.zip
Added a new "splitting" spiller.
When a call is placed to spill an interval this spiller will first try to break the interval up into its component values. Single value intervals and intervals which have already been split (or are the result of previous splits) are spilled by the default spiller. Splitting intervals as described above may improve the performance of generated code in some circumstances. This work is experimental however, and it still miscompiles many benchmarks. It's not recommended for general use yet. llvm-svn: 90951
Diffstat (limited to 'llvm/lib/CodeGen/Spiller.h')
-rw-r--r--llvm/lib/CodeGen/Spiller.h4
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/CodeGen/Spiller.h b/llvm/lib/CodeGen/Spiller.h
index c6bd9857dba..dda52e871fe 100644
--- a/llvm/lib/CodeGen/Spiller.h
+++ b/llvm/lib/CodeGen/Spiller.h
@@ -21,6 +21,7 @@ namespace llvm {
class MachineFunction;
class MachineInstr;
class MachineLoopInfo;
+ class SlotIndex;
class VirtRegMap;
class VNInfo;
@@ -35,7 +36,8 @@ namespace llvm {
/// Spill the given live range. The method used will depend on the Spiller
/// implementation selected.
virtual std::vector<LiveInterval*> spill(LiveInterval *li,
- SmallVectorImpl<LiveInterval*> &spillIs) = 0;
+ SmallVectorImpl<LiveInterval*> &spillIs,
+ SlotIndex *earliestIndex = 0) = 0;
};
OpenPOWER on IntegriCloud