DEBUG(printFreeRegs("\tfree registers", rc));
}
- //assert(verifyIntervals());
-
processActiveIntervals(i);
processInactiveIntervals(i);
return true;
}
-bool RA::verifyIntervals()
-{
- std::set<unsigned> assignedRegisters;
- for (IntervalPtrs::iterator i = active_.begin(); i != active_.end(); ++i) {
- if ((*i)->reg >= MRegisterInfo::FirstVirtualRegister) {
- unsigned reg = v2pMap_.find((*i)->reg)->second;
-
- bool inserted = assignedRegisters.insert(reg).second;
- assert(inserted && "registers in active list conflict");
- }
- }
-
- for (IntervalPtrs::iterator i = inactive_.begin(); i != inactive_.end();
- ++i) {
- if ((*i)->reg >= MRegisterInfo::FirstVirtualRegister) {
- unsigned reg = v2pMap_.find((*i)->reg)->second;
-
- bool inserted = assignedRegisters.insert(reg).second;
- assert(inserted && "registers in inactive list conflict");
- }
- }
-
- for (IntervalPtrs::iterator i = active_.begin(); i != active_.end(); ++i) {
- unsigned reg = (*i)->reg;
- if (reg >= MRegisterInfo::FirstVirtualRegister) {
- reg = v2pMap_.find((*i)->reg)->second;
- }
-
- for (const unsigned* as = mri_->getAliasSet(reg); *as; ++as) {
- assert(assignedRegisters.find(*as) == assignedRegisters.end() &&
- "registers in active list alias each other");
- }
- }
-
- for (IntervalPtrs::iterator i = inactive_.begin(); i != inactive_.end();
- ++i) {
- unsigned reg = (*i)->reg;
- if (reg >= MRegisterInfo::FirstVirtualRegister) {
- reg = v2pMap_.find((*i)->reg)->second;
- }
-
- for (const unsigned* as = mri_->getAliasSet(reg); *as; ++as) {
- assert(assignedRegisters.find(*as) == assignedRegisters.end() &&
- "registers in inactive list alias each other");
- }
- }
-
- return true;
-}
-
void RA::processActiveIntervals(Intervals::const_iterator cur)
{
DEBUG(std::cerr << "\tprocessing active intervals:\n");