diff options
author | Chris Lattner <sabre@nondot.org> | 2004-07-24 03:32:06 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-07-24 03:32:06 +0000 |
commit | 4df98e546dd0cca214df661ae1072e1a3f6eff98 (patch) | |
tree | ef32b39ff289f9e01385619fdd4ae9dee97cee78 /lib/CodeGen/RegAllocIterativeScan.cpp | |
parent | 7ac2d3146a196fa0120c579ecd2ddd69652ad230 (diff) |
Completely eliminate the intervals_ list. instead, the r2iMap_ maintains
ownership of the intervals.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@15155 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/CodeGen/RegAllocIterativeScan.cpp')
-rw-r--r-- | lib/CodeGen/RegAllocIterativeScan.cpp | 18 |
1 files changed, 8 insertions, 10 deletions
diff --git a/lib/CodeGen/RegAllocIterativeScan.cpp b/lib/CodeGen/RegAllocIterativeScan.cpp index 5e62bcad34..d2f5d5b0bf 100644 --- a/lib/CodeGen/RegAllocIterativeScan.cpp +++ b/lib/CodeGen/RegAllocIterativeScan.cpp @@ -85,7 +85,7 @@ namespace { /// initIntervalSets - initializes the four interval sets: /// unhandled, fixed, active and inactive - void initIntervalSets(LiveIntervals::Intervals& li); + void initIntervalSets(); /// processActiveIntervals - expire old intervals and move /// non-overlapping ones to the incative list @@ -151,9 +151,9 @@ bool RA::runOnMachineFunction(MachineFunction &fn) { vrm_.reset(new VirtRegMap(*mf_)); if (!spiller_.get()) spiller_.reset(createSpiller()); - initIntervalSets(li_->getIntervals()); + initIntervalSets(); - numIntervals += li_->getIntervals().size(); + numIntervals += li_->getNumIntervals(); while (linearScan()) { // we spilled some registers, so we need to add intervals for @@ -251,17 +251,15 @@ bool RA::linearScan() return !spilled_.empty(); } -void RA::initIntervalSets(LiveIntervals::Intervals& li) -{ +void RA::initIntervalSets() { assert(unhandled_.empty() && fixed_.empty() && active_.empty() && inactive_.empty() && "interval sets should be empty on initialization"); - for (LiveIntervals::Intervals::iterator i = li.begin(), e = li.end(); - i != e; ++i) { - unhandled_.push_back(&*i); - if (MRegisterInfo::isPhysicalRegister(i->reg)) - fixed_.push_back(&*i); + for (LiveIntervals::iterator i = li_->begin(), e = li_->end(); i != e; ++i){ + unhandled_.push_back(i->second); + if (MRegisterInfo::isPhysicalRegister(i->second->reg)) + fixed_.push_back(i->second); } } |