mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-03-05 12:31:46 +00:00
MachineVerifier: Allow physreg use if just a subreg is defined.
We can't mark partially undefined registers, so we have to allow reading a register in the machine verifier if just parts of a register are defined. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@223896 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
8f08516992
commit
5e40bd7d5f
@ -1066,7 +1066,18 @@ void MachineVerifier::checkLiveness(const MachineOperand *MO, unsigned MONum) {
|
||||
if (!regsLive.count(Reg)) {
|
||||
if (TargetRegisterInfo::isPhysicalRegister(Reg)) {
|
||||
// Reserved registers may be used even when 'dead'.
|
||||
if (!isReserved(Reg))
|
||||
bool Bad = !isReserved(Reg);
|
||||
// We are fine if just any subregister has a defined value.
|
||||
if (Bad) {
|
||||
for (MCSubRegIterator SubRegs(Reg, TRI); SubRegs.isValid();
|
||||
++SubRegs) {
|
||||
if (regsLive.count(*SubRegs)) {
|
||||
Bad = false;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
if (Bad)
|
||||
report("Using an undefined physical register", MO, MONum);
|
||||
} else if (MRI->def_empty(Reg)) {
|
||||
report("Reading virtual register without a def", MO, MONum);
|
||||
|
Loading…
x
Reference in New Issue
Block a user