summaryrefslogtreecommitdiffstats
path: root/llvm/lib/CodeGen/LiveRegMatrix.h
diff options
context:
space:
mode:
authorJakob Stoklund Olesen <stoklund@2pi.dk>2012-06-20 22:52:26 +0000
committerJakob Stoklund Olesen <stoklund@2pi.dk>2012-06-20 22:52:26 +0000
commit96eebf0b141b989235129f820bd6ad4436322f04 (patch)
treed08d6d100444a9ecd16ef89306ca28c52b6b5cf2 /llvm/lib/CodeGen/LiveRegMatrix.h
parent03b87d5aaaa2399b9a537b6455bf564586894ff8 (diff)
downloadbcm5719-llvm-96eebf0b141b989235129f820bd6ad4436322f04.tar.gz
bcm5719-llvm-96eebf0b141b989235129f820bd6ad4436322f04.zip
Convert RAGreedy to LiveRegMatrix interference checking.
Stop depending on the LiveIntervalUnions in RegAllocBase, they are about to be removed. The changes are mostly replacing register alias iterators with regunit iterators, and querying LiveRegMatrix instrad of RegAllocBase. InterferenceCache is converted to work with per-regunit LiveIntervalUnions, and it checks fixed regunit interference separately, using the fixed live intervals provided by LiveIntervalAnalysis. The local splitting helper calcGapWeights() is also considering fixed regunit interference which is kept on the side now. llvm-svn: 158867
Diffstat (limited to 'llvm/lib/CodeGen/LiveRegMatrix.h')
-rw-r--r--llvm/lib/CodeGen/LiveRegMatrix.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/llvm/lib/CodeGen/LiveRegMatrix.h b/llvm/lib/CodeGen/LiveRegMatrix.h
index 019a5f5877e..b3e2d7f4b45 100644
--- a/llvm/lib/CodeGen/LiveRegMatrix.h
+++ b/llvm/lib/CodeGen/LiveRegMatrix.h
@@ -137,6 +137,10 @@ public:
/// This returns a reference to an internal Query data structure that is only
/// valid until the next query() call.
LiveIntervalUnion::Query &query(LiveInterval &VirtReg, unsigned RegUnit);
+
+ /// Directly access the live interval unions per regunit.
+ /// This returns an array indexed by the regunit number.
+ LiveIntervalUnion *getLiveUnions() { return &Matrix[0]; }
};
} // end namespace llvm
OpenPOWER on IntegriCloud