diff options
author | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-06-22 16:46:44 +0000 |
---|---|---|
committer | Jakob Stoklund Olesen <stoklund@2pi.dk> | 2012-06-22 16:46:44 +0000 |
commit | 241d0209a765c97c684b120527e185f17723f650 (patch) | |
tree | e752711f5b5e3f95f4f58a8bc6a0462da407597c /lib/CodeGen/RegAllocPBQP.cpp | |
parent | 7ee3ca10f53aacce1f3aa052f81f9598ac09db33 (diff) | |
download | llvm-241d0209a765c97c684b120527e185f17723f650.tar.gz llvm-241d0209a765c97c684b120527e185f17723f650.tar.bz2 llvm-241d0209a765c97c684b120527e185f17723f650.tar.xz |
Remove LiveIntervals::trackingRegUnits().
With regunit liveness permanently enabled, this function would always
return true.
Also remove now obsolete code for checking physreg interference.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@159006 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegAllocPBQP.cpp')
-rw-r--r-- | lib/CodeGen/RegAllocPBQP.cpp | 58 |
1 files changed, 7 insertions, 51 deletions
diff --git a/lib/CodeGen/RegAllocPBQP.cpp b/lib/CodeGen/RegAllocPBQP.cpp index 5759333657..d0db26b208 100644 --- a/lib/CodeGen/RegAllocPBQP.cpp +++ b/lib/CodeGen/RegAllocPBQP.cpp @@ -236,64 +236,20 @@ std::auto_ptr<PBQPRAProblem> PBQPBuilder::build(MachineFunction *mf, continue; // vregLI overlaps fixed regunit interference. - if (LIS->trackingRegUnits()) { - bool Interference = false; - for (MCRegUnitIterator Units(preg, tri); Units.isValid(); ++Units) { - if (vregLI->overlaps(LIS->getRegUnit(*Units))) { - Interference = true; - break; - } + bool Interference = false; + for (MCRegUnitIterator Units(preg, tri); Units.isValid(); ++Units) { + if (vregLI->overlaps(LIS->getRegUnit(*Units))) { + Interference = true; + break; } - if (Interference) - continue; } + if (Interference) + continue; // preg is usable for this virtual register. vrAllowed.push_back(preg); } - RegSet overlappingPRegs; - - // Record physical registers whose ranges overlap. - for (RegSet::const_iterator pregItr = pregs.begin(), - pregEnd = pregs.end(); - pregItr != pregEnd; ++pregItr) { - unsigned preg = *pregItr; - if (!LIS->hasInterval(preg)) - continue; - const LiveInterval *pregLI = &LIS->getInterval(preg); - - if (pregLI->empty()) { - continue; - } - - if (vregLI->overlaps(*pregLI)) - overlappingPRegs.insert(preg); - } - - for (RegSet::const_iterator pregItr = overlappingPRegs.begin(), - pregEnd = overlappingPRegs.end(); - pregItr != pregEnd; ++pregItr) { - unsigned preg = *pregItr; - - // Remove the register from the allowed set. - VRAllowed::iterator eraseItr = - std::find(vrAllowed.begin(), vrAllowed.end(), preg); - - if (eraseItr != vrAllowed.end()) { - vrAllowed.erase(eraseItr); - } - - // Also remove any aliases. - for (MCRegAliasIterator AI(preg, tri, false); AI.isValid(); ++AI) { - VRAllowed::iterator eraseItr = - std::find(vrAllowed.begin(), vrAllowed.end(), *AI); - if (eraseItr != vrAllowed.end()) { - vrAllowed.erase(eraseItr); - } - } - } - // Construct the node. PBQP::Graph::NodeItr node = g.addNode(PBQP::Vector(vrAllowed.size() + 1, 0)); |