register too.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10450
91177308-0d34-0410-b5e6-
96231b3b80d8
assignVirt2StackSlot(virtReg);
}
p2vMap_[physReg] = physReg; // this denotes a reserved physical register
assignVirt2StackSlot(virtReg);
}
p2vMap_[physReg] = physReg; // this denotes a reserved physical register
+
+ // if it also aliases any other registers with values spill them too
+ for (const unsigned* as = mri_->getAliasSet(physReg); *as; ++as) {
+ unsigned virtReg = p2vMap_[*as];
+ if (virtReg != 0 && virtReg != *as) {
+ // remove interval from active
+ for (IntervalPtrs::iterator i = active_.begin(), e = active_.end();
+ i != e; ++i) {
+ if ((*i)->reg == virtReg) {
+ active_.erase(i);
+ break;
+ }
+ }
+ assignVirt2StackSlot(virtReg);
+ }
+ }
}
void RA::clearReservedPhysReg(unsigned physReg)
}
void RA::clearReservedPhysReg(unsigned physReg)