mirror of
https://github.com/RPCS3/llvm-mirror.git
synced 2024-11-24 19:52:54 +01:00
LivePhysRegs: removeReg() must remove aliased registers
We must remove all aliased registers which may be more than the all sub and super registers combined. Bug found while reading the code. The bug does not affect any existing target as the only use of register aliases I could found were control registers on ARM and Hexagon which are all reserved. llvm-svn: 265510
This commit is contained in:
parent
b53a68ccce
commit
d084f64ddf
@ -84,12 +84,8 @@ public:
|
||||
void removeReg(unsigned Reg) {
|
||||
assert(TRI && "LivePhysRegs is not initialized.");
|
||||
assert(Reg <= TRI->getNumRegs() && "Expected a physical register.");
|
||||
for (MCSubRegIterator SubRegs(Reg, TRI, /*IncludeSelf=*/true);
|
||||
SubRegs.isValid(); ++SubRegs)
|
||||
LiveRegs.erase(*SubRegs);
|
||||
for (MCSuperRegIterator SuperRegs(Reg, TRI, /*IncludeSelf=*/false);
|
||||
SuperRegs.isValid(); ++SuperRegs)
|
||||
LiveRegs.erase(*SuperRegs);
|
||||
for (MCRegAliasIterator R(Reg, TRI, true); R.isValid(); ++R)
|
||||
LiveRegs.erase(*R);
|
||||
}
|
||||
|
||||
/// \brief Removes physical registers clobbered by the regmask operand @p MO.
|
||||
|
Loading…
Reference in New Issue
Block a user