mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-13 20:32:21 +00:00
Stop adding <imp-def> operands when coalescing sub-registers.
We are already setting <undef> flags, and that is good enough. The <imp-def> operands don't mean anything any more. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152009 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
fce711cb65
commit
8d9c3a4ee7
@ -935,13 +935,10 @@ RegisterCoalescer::UpdateRegDefsUses(const CoalescerPair &CP) {
|
||||
SmallVector<unsigned,8> Ops;
|
||||
bool Reads, Writes;
|
||||
tie(Reads, Writes) = UseMI->readsWritesVirtualRegister(SrcReg, &Ops);
|
||||
bool Kills = false, Deads = false;
|
||||
|
||||
// Replace SrcReg with DstReg in all UseMI operands.
|
||||
for (unsigned i = 0, e = Ops.size(); i != e; ++i) {
|
||||
MachineOperand &MO = UseMI->getOperand(Ops[i]);
|
||||
Kills |= MO.isKill();
|
||||
Deads |= MO.isDead();
|
||||
|
||||
// Make sure we don't create read-modify-write defs accidentally. We
|
||||
// assume here that a SrcReg def cannot be joined into a live DstReg. If
|
||||
@ -961,19 +958,6 @@ RegisterCoalescer::UpdateRegDefsUses(const CoalescerPair &CP) {
|
||||
if (JoinedCopies.count(UseMI))
|
||||
continue;
|
||||
|
||||
if (SubIdx) {
|
||||
// If UseMI was a simple SrcReg def, make sure we didn't turn it into a
|
||||
// read-modify-write of DstReg.
|
||||
if (Deads)
|
||||
UseMI->addRegisterDead(DstReg, TRI);
|
||||
else if (!Reads && Writes)
|
||||
UseMI->addRegisterDefined(DstReg, TRI);
|
||||
|
||||
// Kill flags apply to the whole physical register.
|
||||
if (DstIsPhys && Kills)
|
||||
UseMI->addRegisterKilled(DstReg, TRI);
|
||||
}
|
||||
|
||||
DEBUG({
|
||||
dbgs() << "\t\tupdated: ";
|
||||
if (!UseMI->isDebugValue())
|
||||
|
Loading…
Reference in New Issue
Block a user