diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-12-14 23:10:48 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2010-12-14 23:10:48 +0000 |
commit | 6a5bf7782ad3c6b35682cb67e79105759ee21791 (patch) | |
tree | 1fd66f93e686a2e8ea063fce1495fa8fefad375b | |
parent | 757f0e37eaba061ead2ad0a341f86a4ca954285f (diff) | |
download | bcm5719-llvm-6a5bf7782ad3c6b35682cb67e79105759ee21791.tar.gz bcm5719-llvm-6a5bf7782ad3c6b35682cb67e79105759ee21791.zip |
Simplyfy RegAllocBasic by using getOverlaps instead of getAliasSet.
llvm-svn: 121801
-rw-r--r-- | llvm/lib/CodeGen/RegAllocBasic.cpp | 18 |
1 files changed, 4 insertions, 14 deletions
diff --git a/llvm/lib/CodeGen/RegAllocBasic.cpp b/llvm/lib/CodeGen/RegAllocBasic.cpp index a5e5f1f308e..f01ebf5030e 100644 --- a/llvm/lib/CodeGen/RegAllocBasic.cpp +++ b/llvm/lib/CodeGen/RegAllocBasic.cpp @@ -285,12 +285,9 @@ void RegAllocBase::allocatePhysRegs() { // physical register. Return the interfering register. unsigned RegAllocBase::checkPhysRegInterference(LiveInterval &VirtReg, unsigned PhysReg) { - if (query(VirtReg, PhysReg).checkInterference()) - return PhysReg; - for (const unsigned *AliasI = TRI->getAliasSet(PhysReg); *AliasI; ++AliasI) { + for (const unsigned *AliasI = TRI->getOverlaps(PhysReg); *AliasI; ++AliasI) if (query(VirtReg, *AliasI).checkInterference()) return *AliasI; - } return 0; } @@ -331,15 +328,9 @@ RegAllocBase::spillInterferences(LiveInterval &VirtReg, unsigned PhysReg, SmallVectorImpl<LiveInterval*> &SplitVRegs) { // Record each interference and determine if all are spillable before mutating // either the union or live intervals. - - // Collect interferences assigned to the requested physical register. - LiveIntervalUnion::Query &QPreg = query(VirtReg, PhysReg); - unsigned NumInterferences = QPreg.collectInterferingVRegs(); - if (QPreg.seenUnspillableVReg()) { - return false; - } + unsigned NumInterferences = 0; // Collect interferences assigned to any alias of the physical register. - for (const unsigned *asI = TRI->getAliasSet(PhysReg); *asI; ++asI) { + for (const unsigned *asI = TRI->getOverlaps(PhysReg); *asI; ++asI) { LiveIntervalUnion::Query &QAlias = query(VirtReg, *asI); NumInterferences += QAlias.collectInterferingVRegs(); if (QAlias.seenUnspillableVReg()) { @@ -351,8 +342,7 @@ RegAllocBase::spillInterferences(LiveInterval &VirtReg, unsigned PhysReg, assert(NumInterferences > 0 && "expect interference"); // Spill each interfering vreg allocated to PhysReg or an alias. - spillReg(VirtReg, PhysReg, SplitVRegs); - for (const unsigned *AliasI = TRI->getAliasSet(PhysReg); *AliasI; ++AliasI) + for (const unsigned *AliasI = TRI->getOverlaps(PhysReg); *AliasI; ++AliasI) spillReg(VirtReg, *AliasI, SplitVRegs); return true; } |