aboutsummaryrefslogtreecommitdiffstats
path: root/include/llvm/CodeGen/ScheduleDAGInstrs.h
diff options
context:
space:
mode:
authorAndrew Trick <atrick@apple.com>2013-04-24 15:54:43 +0000
committerAndrew Trick <atrick@apple.com>2013-04-24 15:54:43 +0000
commite38afe1e335084134f7830ba6f2208e2ddde59b4 (patch)
treee50d2dd8447a5d5d900d83d7c1b0f58c5090e61d /include/llvm/CodeGen/ScheduleDAGInstrs.h
parente2326ad2c00fe3e8e21dbf312f1987ba92308733 (diff)
downloadexternal_llvm-e38afe1e335084134f7830ba6f2208e2ddde59b4.zip
external_llvm-e38afe1e335084134f7830ba6f2208e2ddde59b4.tar.gz
external_llvm-e38afe1e335084134f7830ba6f2208e2ddde59b4.tar.bz2
MI Sched: eliminate local vreg copies.
For now, we just reschedule instructions that use the copied vregs and let regalloc elliminate it. I would really like to eliminate the copies on-the-fly during scheduling, but we need a complete implementation of repairIntervalsInRange() first. The general strategy is for the register coalescer to eliminate as many global copies as possible and shrink live ranges to be extended-basic-block local. The coalescer should not have to worry about resolving local copies (e.g. it shouldn't attemp to reorder instructions). The scheduler is a much better place to deal with local interference. The coalescer side of this equation needs work. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@180193 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'include/llvm/CodeGen/ScheduleDAGInstrs.h')
-rw-r--r--include/llvm/CodeGen/ScheduleDAGInstrs.h3
1 files changed, 3 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/ScheduleDAGInstrs.h b/include/llvm/CodeGen/ScheduleDAGInstrs.h
index b71ece4..990cac6 100644
--- a/include/llvm/CodeGen/ScheduleDAGInstrs.h
+++ b/include/llvm/CodeGen/ScheduleDAGInstrs.h
@@ -150,6 +150,9 @@ namespace llvm {
virtual ~ScheduleDAGInstrs() {}
+ /// \brief Expose LiveIntervals for use in DAG mutators and such.
+ LiveIntervals *getLIS() const { return LIS; }
+
/// \brief Get the machine model for instruction scheduling.
const TargetSchedModel *getSchedModel() const { return &SchedModel; }