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.

llvm-svn: 217120
This commit is contained in:
Juergen Ributzka 2014-09-04 02:07:36 +00:00
parent 30c02e36cc
commit 4bea494569
2 changed files with 3 additions and 40 deletions

View File

@ -724,19 +724,9 @@ bool MachineSinking::SinkInstruction(MachineInstr *MI, bool &SawStore) {
++MachineBasicBlock::iterator(DbgMI));
}
// When sinking the instruction the live time of its operands can be extended
// bejond their original last use (marked with a kill flag). Conservatively
// clear the kill flag in all instructions that use the same operand
// 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);
}
// Conservatively, clear any kill flags, since it's possible that they are no
// longer correct.
MI->clearKillInfo();
return true;
}

View File

@ -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
}