mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2024-12-14 11:32:34 +00:00
Revert r216803 "[MachineSinking] Clear kill flag of all operands at all their uses."
This reverts commit r216803, because it might have broken the buildbot. The issue is tracked in PR20842. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@217120 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
319b5d0e8e
commit
cd72c216cd
@ -724,19 +724,9 @@ bool MachineSinking::SinkInstruction(MachineInstr *MI, bool &SawStore) {
|
|||||||
++MachineBasicBlock::iterator(DbgMI));
|
++MachineBasicBlock::iterator(DbgMI));
|
||||||
}
|
}
|
||||||
|
|
||||||
// When sinking the instruction the live time of its operands can be extended
|
// Conservatively, clear any kill flags, since it's possible that they are no
|
||||||
// bejond their original last use (marked with a kill flag). Conservatively
|
// longer correct.
|
||||||
// clear the kill flag in all instructions that use the same operand
|
MI->clearKillInfo();
|
||||||
// registers.
|
|
||||||
for (auto &MO : MI->uses())
|
|
||||||
if (MO.isReg() && MO.isUse()) {
|
|
||||||
// Preserve the kill flag for this instruction.
|
|
||||||
bool IsKill = MO.isKill();
|
|
||||||
// Clear the kill flag in all instruction that use this operand.
|
|
||||||
MRI->clearKillFlags(MO.getReg());
|
|
||||||
// Restore the kill flag for only this instruction.
|
|
||||||
MO.setIsKill(IsKill);
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
@ -1,27 +0,0 @@
|
|||||||
; RUN: llc -mtriple=aarch64-apple-darwin -fast-isel -verify-machineinstrs < %s
|
|
||||||
|
|
||||||
define void @test() {
|
|
||||||
%sext = shl i64 undef, 32
|
|
||||||
%1 = ashr exact i64 %sext, 32
|
|
||||||
%2 = icmp sgt i64 undef, %1
|
|
||||||
br i1 %2, label %3, label %.critedge1
|
|
||||||
|
|
||||||
; <label>:3 ; preds = %0
|
|
||||||
%4 = getelementptr inbounds i32* undef, i64 %1
|
|
||||||
%5 = load i32* %4, align 4
|
|
||||||
br i1 undef, label %6, label %.critedge1
|
|
||||||
|
|
||||||
; <label>:6 ; preds = %3
|
|
||||||
%7 = and i32 %5, 255
|
|
||||||
%8 = icmp eq i32 %7, 255
|
|
||||||
br i1 %8, label %.lr.ph, label %._crit_edge
|
|
||||||
|
|
||||||
.lr.ph: ; preds = %.lr.ph, %6
|
|
||||||
br i1 undef, label %.lr.ph, label %.critedge1
|
|
||||||
|
|
||||||
._crit_edge: ; preds = %6
|
|
||||||
ret void
|
|
||||||
|
|
||||||
.critedge1: ; preds = %.lr.ph, %3, %0
|
|
||||||
ret void
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user